C 언어에서는 주소를 저장하기 위해 특별한 변수형을 사용합니다. 이것이 바로 포인터 변수입니다. 정수형 변수 a의 주소를 저장하는 포인터 변수 b를 선언하고. 변수 a의 주소를 포인터 변수 b에 저장할 수 있습니다.
int a;를 선언하면 컴퓨터는 가용한 메모리를 체크하여 메모리 방을 잡습니다 즉, 메모리를 할당 받습니다. 그리고 a = 3;이라고 초기화하면 컴퓨터는 할당 받은 메모리의 주소를 보고 그 주소를 찾아가 초깃값인 3을 저장합니다.
여기까지 보면 우리가 메모리 주소에 대한 개념이 없어도 괜찮을 것 같지 않나요? 컴퓨터가 알아서 주소를 찾아가 정보를 저장하니깐요. 하지만 변수 a에 대한 주소를 개발자가 알고자 할 때는 어떻게 해야 할까요?
예를 들어 아파트 경비원 아저씨가 어떤 집을 찾아주거나 설명하려면 어떻게 표현할까요? 두 가지가 있습니다. 직접적으로 “메이킷 아파트 103동 708호로 가시면 돼요.”라고 말하는 방법이 있고, 두 번째 방법으로 “메이킷 아파트 우진이네 집 주소로 가면 돼요.”라고 해도 됩니다.
그림 8-3 | 어떤 집을 찾을 때 사용하는 두 가지 방법