형식에 맞춰 변수 미션맨을 선언합니다. 그리고 변수 미션맨의 값에 변수 철수의 주소를 넣어 보겠습니다. 변수의 주소는 앞에 &를 붙이면 알 수 있다고 했죠. 따라서 다음과 같이 작성하면 변수 미션맨에 변수 철수의 주소가 저장되어 미션맨이 철수의 집 주소를 알 수 있습니다.
int * 미션맨; // 포인터 변수 선언
미션맨 = &철수;
그럼 미션맨이 방문한 곳의 주소와 암호를 출력해 봅시다. 현재 변수 미션맨에는 변수 철수의 주소가 들어 있으므로 이 값을 그대로 출력하면 철수네 주소를 알 수 있습니다. 이때 변수의 값이 주소이므로 서식 지정자는 %p를 사용합니다. 암호도 알아내야 하는데, 암호는 미션맨이 방문한 주소에 들어 있는 값이죠? 이 값은 포인터 변수명 앞에 *를 붙이면 알아낼 수 있습니다. 즉, 포인터 변수명 앞에 *를 붙이면 포인터 변수가 가리키는 주소의 값을 알 수 있습니다. 여기까지 작성하고 실행해 봅시다. 비교하기 위해 기존 변수의 값도 출력합니다.
7.2.2 포인터로주소알아내기.c
int main(void) {
int 철수 = 1;
int 영희 = 2;
int 민수 = 3;
// 변수의 주소 출력
printf("철수네 주소 : %p, 암호 : %d\n", &철수, 철수);
printf("영희네 주소 : %p, 암호 : %d\n", &영희, 영희);
printf("민수네 주소 : %p, 암호 : %d\n", &민수, 민수);
// 포인터 변수 선언과 값 출력
int * 미션맨;
미션맨 = &철수;
printf("미션맨이 방문한 곳의 주소 : %p, 암호 : %d\n", 미션맨, *미션맨);
return 0;
}