#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;
}
La sortie que je reçois est:Qu'est-ce exactement que% p et pourquoi est-il différent de l'impression de la valeur int du pointeur en utilisant% d?
% ./a.out
0x7ffe12032c40
302197824
0x2
%
La valeur des deux premiers changements de sortie (évidemment en raison de ASLR) et le 0x2 reste constante.
'printf ("% d \ n ", ptr);' est un comportement indéfini. – Ari0nhh
la taille du pointeur n'est pas toujours la même que la taille de int –
Aussi, utilisez '% zu' pour' size_t' (au lieu de '% u'), et'% zd' pour 'ssize_t'. – e0k