C/C++
C언어는 함수 내에 선언한 숫자 변수를 초기화하지 않습니다.
배열 변수도 마찬가지여서 아래와 같이 코드를 실행하면 일명 쓰레기 값이 출력됩니다.
int main( void){
int ary_num[5];int ndx;
for ( ndx = 0; ndx < 5; ndx++){
printf( "%d=%d\n", ndx, ary_num[ndx]);
}
return 0;
}
]$ a.out
0=-1219121579
1=-1217441152
2=0
3=134513801
4=-1217601548
]$
안전한 실행을 위해 초기화를 하겠습니다. 모두 0으로 초기하려는데 첫 번째 배열값은 1로 설정하고 싶습니다.
그러면 어떻게 하면 될까요? 배열은 {} 문자로 초기화할 수 있습니다. 첫 번째 배열값은 1로, 나머지는 0으로 초기화할 때는
아래와 같이 지정하고픈 숫자 이후는 쉼표로 나머지를 0으로 초기화하게 합니다.
int main( void){
int ary_num[5] = {1,};int ndx;
for ( ndx = 0; ndx < 5; ndx++){
printf( "%d=%d\n", ndx, ary_num[ndx]);
}
return 0;
}
]$ a.out
0=1
1=0
2=0
3=0
4=0
]$
그러나 최근 컴파일러는 쉼표를 사용하지 않아도 배열 요소 크기만큼 입력하면
그 이후의 것은 자동으로 0으로 초기화합니다.
즉,
int ary_num[5] = {1,};
이렇게 쉼표를 주나
int ary_num[5] = {1};
쉼표를 사용하지 않아도 상수를 지정하지 않은 요소는 모두 0으로 초기화합니다.
그래도 쉼표를 표시해 주는 것이 좋겠습니다.