인프런 커뮤니티 질문&답변

dmsgkrkt1님의 프로필 이미지
dmsgkrkt1

작성한 질문수

문제로 배우는 C언어

1차원 배열 , 2차원 배열 질문이요!

해결된 질문

작성

·

345

0

1차원 배열에서 

int a[3] ;

printf("%d"\n, a[0]);

return 0;

이 결과값이 0가 나와야 되는거 아닌가요?

int a[3][2];

printf("%d"\n, a[0]a[1]);

return 0;

이 결과 값도 0가 나와야 되는거 아닌가요? 

계속 -858993460 이런식으로 나오는데 ..

배열선언하고 인덱스 안에 아무것도 안넣으면 0로 되어있는걸로 알고있는데 

44번문제에서 선생님의 답도 그대로 실행시켜보니 0대신 -858993460이 들어가서 나옵니다.

제가 알고 있는 개념이 잘못된 건가요?

답변 2

1

김태원님의 프로필 이미지
김태원
지식공유자

main()함수 위에 전역변수로 배열을 선언하면 0으로 초기화됩니다. 하지만 main()함수 안에서 지역변수로 선언된 배열은 컴파일러에 따라 0으로 초기화될 수도 있고, -858993460과 같은 의미없는 값으로 초기화되기도 합니다.

지역변수를 모두 0으로 초기화하고 싶으면 변수를 선언할 때 int a[3]={0, }; 으로 하면 됩니다. 

0

dmsgkrkt1님의 프로필 이미지
dmsgkrkt1
질문자

감사합니다!

dmsgkrkt1님의 프로필 이미지
dmsgkrkt1

작성한 질문수

질문하기