해결된 질문
작성
·
192
답변 1
3
안녕하세요. 답변 도우미입니다.
sizeof(&arr[0]) 은 "주소의 크기" 이죠. 그러니 64비트에선 8이 나올 것입니다.
질문자님께서 배열의 원소들의 "주소의 크기"가 아닌 그냥 배열의 원소들의 "주소값"를 출력했다고 말씀하셨는데 이러면 4 씩 차이가 날 수 밖에 없습니다. 원소들의 주소값의 간격을 비교하는 것은 곧 "주소의 크기"가 아닌 "원소의 크기"에 따른 것이기 때문입니다.
int 는 64 비트 시스템에서도 그대로 4byte죠. 배열의 원소들은 메모리 내에서 연속적으로 따닥따닥 이웃사이로 붙어서 자리 잡으므로 당연히 배열의 원소들의 "주소값"은 4 씩 차이날 수 밖에 없습니다.배열의 원소들의 "주소값"들을 출력했을때 4씩 차이가 난 이유는 "원소의 크기"가 4byte 이기 때문입니다.
그러니 원소의 집주소가 8자리인 것, 즉 "원소의 주소값 크기"가 8byte 인 것과는 상관이 없죠. 이웃집과의 간격차이가 "집 주소를 몇 자리로 표현하느냐"와는 관련이 없듯이 말입니다. 이웃집들간의 간격차이는 "집의 크기"에서 오죠.