Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C 언어에서 초기화되지 않은 배열 접근의 개념 설명

<시간/>

문제

C 언어에서 초기화되지 않은 배열을 사용하면 프로그램이 실행됩니까?

해결책

  • 초기화되지 않은 배열을 사용하는 경우 컴파일러는 컴파일 및 실행 오류를 생성하지 않습니다.

  • 배열이 초기화되지 않은 경우 예측할 수 없는 결과가 나타날 수 있습니다.

  • 따라서 배열 요소를 항상 기본값으로 초기화하는 것이 좋습니다.

예시 프로그램

다음은 초기화되지 않은 배열에 접근하는 C 프로그램입니다 -

#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;
}

출력

위의 프로그램이 실행되면 다음과 같은 결과가 생성됩니다 -

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

참고

배열을 초기화하지 않으면 기본적으로 가비지 값을 인쇄하고 오류를 표시하지 않습니다.

초기화되지 않은 배열에 접근하기 위한 다른 C 프로그램을 고려하십시오 -

예시

#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;
}

출력

위의 프로그램이 실행되면 다음과 같은 결과가 생성됩니다 -

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