문제
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