더북(TheBook)

형식에 맞춰 변수 미션맨을 선언합니다. 그리고 변수 미션맨의 값에 변수 철수의 주소를 넣어 보겠습니다. 변수의 주소는 앞에 &를 붙이면 알 수 있다고 했죠. 따라서 다음과 같이 작성하면 변수 미션맨에 변수 철수의 주소가 저장되어 미션맨이 철수의 집 주소를 알 수 있습니다.

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;
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.