C언어에서 포인터에대해서 질문좀 드릴께요
글쓴이: gogoye / 작성시간: 화, 2015/08/25 - 9:16오후
#include
int main(void) {
int num = 10;
int *ptr1 =& num;
printf("%p \n", ptr1);
printf("%X \n", ptr1);
return 0;
}
여기서 왜 출력값이 똑같이 나오는거죠?
ptr1이 num를 가리키고있다면, 값이 num의 주소값이 저장되어있어야하는거 아닌가요?
왜 prt1의 주소값이 저장되어있는거죠 ㅜㅜ
C언어 초보좀 도와주십쇼 ㅜㅜ
Forums:


ptr1의 주소값은 &ptr1 입니다.
ptr1의 주소값은 &ptr1 입니다.
제가 했을 땐 똑같이 안 나오던데요?
제가 했을 땐 똑같이 안 나오던데요?
같은 값을 찍어서 그러네요.
printf( "%p \n", ptr1 );
printf( "%p \n", &ptr1 );
라스코니님 말씀대로 이렇게 찍어야 하겠지요.
올리신 예제처럼 찍으면 둘 다 ptr1에 들어있는 값을 찍는 거니 똑같이 나오는 거고요. :)
ptr1에는 num의 주소가 저장되어 있죠.
ptr1은 포인터니까 num의 주소가 저장돼 있겠죠. 그리고 %p는 그 주소를 출력하는 것이고 %x는 ptr이 담고 있는 값인 그 주소를 16진수 형식으로 출력하는 것이니 같은 값이 출력되는 것으로 보입니다.
$ cc kldp.c &&
$ 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