변수를 선언하면 메모리에 철수라는 공간이 생깁니다. 그리고 철수라는 공간의 위치를 나타내는 주소가 있습니다. 우리는 101호라고 읽지만, 실제 메모리에서는 어떤 값일지 모릅니다. 그런데 이 값을 알아내는 방법이 있습니다. 변수명 앞에 &를 붙여 출력하면 변수의 주소를 알 수 있습니다. 그리고 변수의 주소를 출력하는 방법은 변수의 값을 출력하는 방법과 조금 다릅니다. 서식 지정자에 %d 대신 포인터를 의미하는 %p를 사용합니다. 그러면 메모리 주소를 16진수 형태로 출력합니다. 한번 실행해 볼까요?
7.2.1 변수와메모리.c
int main(void) {
int 철수 = 1;
int 영희 = 2;
int 민수 = 3;
printf("철수네 주소 : %p, 암호 : %d\n", &철수, 철수); // 변수의 주소 출력
return 0;
}
실행결과 |
철수네 주소 : 00000080D0BEFA24, 암호 : 1 |
실행결과를 보면 암호는 변수의 값인 1이 그대로 나왔고, 철수네 주소는 00000080D0BEFA24라는 긴 값이 나옵니다. 이 값은 변수 철수가 메모리의 어느 위치에 있는지를 나타냅니다. 즉, 변수의 주소입니다.
TIP 실행결과에서 변수의 주소가 책과 달라도 당황하지 마세요. 변수의 주소는 컴퓨터마다 다르고 심지어 같은 컴퓨터라도 실행할 때마다 다르게 나옵니다.