Vấn đề
Trong ngôn ngữ C, chương trình có được thực thi không, nếu chúng ta sử dụng một mảng chưa được khởi tạo?
Giải pháp
-
Nếu chúng tôi sử dụng bất kỳ mảng nào chưa được khởi tạo, trình biên dịch sẽ không tạo ra bất kỳ quá trình biên dịch nào và lỗi thực thi.
-
Nếu một mảng chưa được khởi tạo, bạn có thể nhận được kết quả không thể đoán trước.
-
Vì vậy, tốt hơn hết là chúng ta nên luôn khởi tạo các phần tử mảng với giá trị mặc định.
Chương trình mẫu
Sau đây là chương trình C để truy cập vào một mảng chưa được khởi tạo -
#include <stdio.h> int main(void){ int a[4]; int b[4] = {1}; int c[4] = {1,2,3,4}; int i; //for loop counter //printing all alements of all arrays printf("\nArray a:\n"); for( i=0; i<4; i++ ) printf("arr[%d]: %d\n",i,a[i]); printf("\nArray b:\n"); for( i=0; i<4; i++) printf("arr[%d]: %d\n",i,b[i]); printf("\nArray c:\n"); for( i=0; i<4; i++ ) printf("arr[%d]: %d\n",i, c[i]); return 0; }
Đầu ra
Khi chương trình trên được thực thi, nó tạo ra kết quả sau -
Array a: arr[0]: 4195872 arr[1]: 0 arr[2]: 4195408 arr[3]: 0 Array b: arr[0]: 1 arr[1]: 0 arr[2]: 0 arr[3]: 0 Array c: arr[0]: 1 arr[1]: 2 arr[2]: 3 arr[3]: 4
Lưu ý
Nếu chúng tôi không khởi tạo một mảng, theo mặc định, mảng sẽ in các giá trị rác và không bao giờ hiển thị lỗi.
Hãy xem xét một chương trình C khác để truy cập vào một mảng chưa được khởi tạo -
Ví dụ
#include <stdio.h> int main(void){ int A[4]; int B[4] ; int C[4] = {1,2}; int i; //for loop counter //printing all alements of all arrays printf("\nArray a:\n"); for( i=0; i<4; i++ ) printf("arr[%d]: %d\n",i,A[i]); printf("\nArray b:\n"); for( i=0; i<4; i++) printf("arr[%d]: %d\n",i,B[i]); printf("\nArray c:\n"); for( i=0; i<4; i++ ) printf("arr[%d]: %d\n",i, C[i]); return 0; }
Đầu ra
Khi chương trình trên được thực thi, nó tạo ra kết quả sau -
Array a: arr[0]: 4195856 arr[1]: 0 arr[2]: 4195408 arr[3]: 0 Array b: arr[0]: -915120393 arr[1]: 32767 arr[2]: 0 arr[3]: 0 Array c: arr[0]: 1 arr[1]: 2 arr[2]: 0 arr[3]: 0