— teacher appointment exam, C, 2011, array, memset — 1 min read
4
, sum = 4
5
, sum = 9
9
출력0
으로 초기화된 값이 들어있다. sum += score[i];
sum
에 계속 0을 더하면 sum
의 값이 변하지 않으므로 9
출력.9
출력1929
아래 두 코드는 같다.
1sum += score[i];
1sum = sum + score[i];
배열에 값을 정해주지 않으면
0
으로 초기화 된다.
배열초기화
여기서 말하는 0은 메모리공간의 처음부터 끝까지 전부 0으로 설정된다는 의미는 아니기 때문에(char는 \0등) memset()과는 좀 다른 의미입니다.
0으로 설정과 memset()이 다르다? (char는 \0)??
이 부분이 헷갈려서 더 찾아본 결과 결론부터 말하자면 배열 자동 초기화는 컴파일러 환경에 따라서 결과가 다를 수 있다.(memset()
은 같다.)
이유
0
으로 초기화 되는 것은 배열에 0
을 대입한 것과 같다.memset()
으로 초기화 하면 Byte단위로 0
으로 초기화 하기 때문에 컴파일러 환경에 관계 없이 메모리 구조가 같다.참고링크