해결된 질문
작성
·
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
를 반환합니다.
친절한 답변 감사드립니다