Computer >> Máy Tính >  >> Lập trình >> lập trình C

Giải thích khái niệm về truy cập mảng chưa được khởi tạo bằng ngôn ngữ C

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