실행 결과
float 실수형 변수의 크기는 4
double 실수형 변수의 크기는 8
int 포인터 변수의 크기는 4
long 포인터 변수의 크기는 4
float 포인터 변수의 크기는 4
double 포인터 변수의 크기는 4
실행 결과를 통해 포인터 변수의 메모리 크기는 자료형에 관계 없이 모두 4바이트임을 알 수 있습니다. 그렇다면 그 이유가 무엇일까요?
집의 크기가 크든 작든 똑같이 공평하게 갖고 있는 것이 무엇일까요? 앞서도 언급했듯이 각자 집에 해당하는 주소일 것입니다. 큰 집이거나 작은 집이거나 상관 없이 집 주소 형식은 동일합니다. 아무리 집이 커도 ‘abc로 123길’일 것이고, 반대로 아무리 집이 작아도 집 주소는 ‘xyz로 254길’과 같이 그 형식은 같습니다.
포인터 주소도 마찬가지입니다. float 자료형의 크기인 4바이트 메모리 주소와 double 자료형의 크기인 8바이트 메모리 주소는 집 크기, 즉 메모리 크기에 상관 없이 같은 형식입니다. 포인터의 크기는 모두 4바이트이며, 주소 형식도 모두 같습니다. 따라서 4바이트 크기의 메모리로 주소를 저장할 수 있습니다.
Tip
컴파일러 종류에 따라 포인터 변수의 크기가 8바이트일 때도 있습니다. 만약 컴파일러의 설정이 32비트일 경우 포인터 변수의 크기는 4바이트이고, 64비트로 설정할 경우에는 포인터 변수의 크기가 8바이트가 됩니다. 하지만 이 책에서는 이해를 돕기 위해 4바이트로 한정해서 얘기하겠습니다.
지금까지 포인터의 기본 개념을 파악하였습니다. 기본 개념이라고 얘기했지만, 사실 포인터의 개념 소개는 끝난 것이나 다름 없습니다. 지금까지 설명한 개념만 잘 이해하고 파악하면 앞으로 진행할 포인터에 대해서는 어렵지 않게 이해할 수 있기 때문입니다.