인프런 커뮤니티 질문&답변
배열의 크기에 대한 질문이요
해결된 질문
작성
·
223
1
int a[3];
cout << sizeof(a) <<endl;
cout << sizeof(a[3]) <<endl;
이 둘의 출력결과가 다른이유는 무엇인가요??
답변 1
1
안녕하세요, 답변 도우미 Soobak 입니다.
첫 번째 cout << sizeof(a) << endl 에서 sizeof(a) 는 배열의 전체 크기를 반환하고,
두 번째 cout << sizeof(a[3]) << endl 에서 sizeof(a[3]) 는 배열의 특정 요소의 크기를 반환하기 때문입니다.
cout << sizeof(a) << endl: 이 코드에서
sizeof(a)는 배열a의 전체 크기를 반환합니다.int자료형의 크기가4바이트인 환경이라면,sizeof(a)는12바이트 (3*4바이트) 를 반환합니다.cout << sizeof(a[3]) << endl
: 이 코드에서는 사실 인덱스 참조가 잘못되었습니다.
배열a는 크기가3이므로, 인덱스0,1,2를 가지며, 인덱스3은 범위를 벗어납니다.
하지만, 배열의 요소에 대한 크기를 측정하려는 것임을 전제로 답변을 드려보면,a[3]은int자료형이므로,sizeof(a[3])은int자료형의 크기를 반환합니다.
만약,int자료형의 크기가4바이트인 환경이라면,sizeof(a[3])은4를 반환합니다.






친절한 답변 감사드립니다