$ cat kldp.c
#include <stdio.h>
int main(void) {
int num = 10;
int *ptr1 =& num;
printf("%p \n", ptr1);
printf("%X \n", ptr1);
return 0;
}
$ cc kldp.c && ./a.out
kldp.c:7:17: warning: format specifies type 'unsigned int' but the argument has
type 'int *' [-Wformat]
printf("%X \n", ptr1);
~~ ^~~~
1 warning generated.
0x7fff52815798
52815798
ptr1의 주소값은 &ptr1 입니다.
ptr1의 주소값은 &ptr1 입니다.
제가 했을 땐 똑같이 안 나오던데요?
제가 했을 땐 똑같이 안 나오던데요?
같은 값을 찍어서 그러네요.
printf( "%p \n", ptr1 );
printf( "%p \n", &ptr1 );
라스코니님 말씀대로 이렇게 찍어야 하겠지요.
올리신 예제처럼 찍으면 둘 다 ptr1에 들어있는 값을 찍는 거니 똑같이 나오는 거고요. :)
ptr1에는 num의 주소가 저장되어 있죠.
ptr1은 포인터니까 num의 주소가 저장돼 있겠죠. 그리고 %p는 그 주소를 출력하는 것이고 %x는 ptr이 담고 있는 값인 그 주소를 16진수 형식으로 출력하는 것이니 같은 값이 출력되는 것으로 보입니다.
$ cc kldp.c &&
댓글 달기