#include <stdio.h>
int main()
{
int *ptr;
int a=2;
ptr=&a;
printf("%p\n",ptr);
printf("%d\n",ptr);
printf("%p\n",a);
return 0;
}
I 얻을 출력은 :% p 란 정확히 무엇이며 % d를 사용하여 포인터의 int 값을 출력하는 것과 다른 점은 무엇입니까?
% ./a.out
0x7ffe12032c40
302197824
0x2
%
(분명 때문에 ASLR의) 첫 두 출력 값이 변경 및 0x2로는 일정하게 유지된다.
'printf ("% d \ n", ptr);은 (는) 정의되지 않은 동작입니다. – Ari0nhh
포인터의 크기가 항상 int의 크기와 같지 않다 –
또한'size_t' ('% u' 대신)에'% zu'를 사용하고'ssize_t'에'% zd'를 사용하십시오. – e0k