Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Giải thích khởi tạo tại thời điểm biên dịch và chạy trong C


Hãy lấy khái niệm mảng để nói về khởi tạo tại compile time và run time.

Mảng

Mảng là tập hợp các mục được lưu trữ tại các vị trí bộ nhớ liên tiếp, truy cập phần tử bằng chỉ số.

Khởi tạo mảng tại compile time

Trong khởi tạo compile time, người dùng phải nhập chi tiết trong chính chương trình.

Khởi tạo compile time giống như khởi tạo biến. Dạng chung khởi tạo mảng:

Cú pháp

kieu ten[kich_thuoc] = { danh_sach_gia_tri };
// Khởi tạo mảng nguyên
int rollnumbers[4] = {2, 5, 6, 7};
// Khởi tạo mảng thực
float area[5] = {23.4, 6.8, 5.5, 7.3, 2.4};
// Khởi tạo mảng ký tự
char name[9] = {'T', 'u', 't', 'o', 'r', 'i', 'a', 'l', '\0'};

Ví dụ

Chương trình C hiển thị mảng:

#include <stdio.h>
void main() {
    // Khai báo mảng khởi tạo compile time //
    int array[5] = {1, 2, 3, 4, 5};
    // Khai báo biến //
    int i;
    // In đầu ra dùng for //
    printf("Hien thi cac phan tu mang: ");
    for (i = 0; i < 5; i++) {
        printf("%d ", array[i]);
    }
}

Kết quả

Hien thi cac phan tu mang: 1 2 3 4 5

Khởi tạo mảng tại run time

Dùng khởi tạo runtime, người dùng có cơ hội nhập giá trị khác nhau mỗi lần chạy.

Cũng dùng cho mảng lớn hoặc mảng với giá trị do người dùng chỉ định. Mảng có thể khởi tạo runtime bằng scanf().

Ví dụ

Chương trình C tính tổng và tích các phần tử mảng 2 chiều dùng run time:

#include <stdio.h>
void main() {
    // Khai báo mảng - run time //
    int A[2][3], B[2][3], i, j, sum[2][3], product[2][3];
    // Đọc phần tử vào mảng A và B dùng for //
    printf("Nhap phan tu vao mang A: \n");
    for (i = 0; i < 2; i++) {
        for (j = 0; j < 3; j++) {
            printf("A[%d][%d] :", i, j);
            scanf("%d", &A[i][j]);
        }
        printf("\n");
    }
    for (i = 0; i < 2; i++) {
        for (j = 0; j < 3; j++) {
            printf("B[%d][%d] :", i, j);
            scanf("%d", &B[i][j]);
        }
        printf("\n");
    }
    // Tính tổng và in //
    printf("Mang tong la: \n");
    for (i = 0; i < 2; i++) {
        for (j = 0; j < 3; j++) {
            sum[i][j] = A[i][j] + B[i][j];
            printf("%d\t", sum[i][j]);
        }
        printf("\n");
    }
    // Tính tích và in //
    printf("Mang tich la: \n");
    for (i = 0; i < 2; i++) {
        for (j = 0; j < 3; j++) {
            product[i][j] = A[i][j] * B[i][j];
            printf("%d\t", product[i][j]);
        }
        printf("\n");
    }
}

Kết quả

Nhap phan tu vao mang A: A[0][0] :A[0][1] :A[0][2] : A[1][0] :A[1][1] :A[1][2] : B[0][0] :B[0][1] :B[0][2] : B[1][0] :B[1][1] :B[1][2] :
Mang tong la: 0 0 0 0 0 0
Mang tich la: 0 0 0 0 0 0