#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;
}
Выход я получаю:Что такое% p и почему он отличается от печати значения int указателя, используя% d?
% ./a.out
0x7ffe12032c40
302197824
0x2
%
Значение первых двух выходных изменений (очевидно, из-за ASLR) и 0x2 остается постоянной.
'printf ("% d \ n ", ptr);' не определено поведение. – Ari0nhh
размер указателя не всегда совпадает с размером int –
Кроме того, используйте '% zu' для' size_t' (вместо '% u') и'% zd' для 'ssize_t'. – e0k