最近在printf遇到一个偏冷的格式控制字符%p,其实它表示的含义可以理解成和%d %x的应用是一样的。
具体来说,%p表示输出以内存中实际存储一个变量格式(十六进制、32位(视机器而定))的值。即如:
#include<stdio.h>
int main()
{
int a=10;
int *p=&a;
printf("%d %p\n",a,a);
printf("%d %d %p\n",p,&a,p);
return 0;
}
输出结果:
变量a的值10,在内存中按十六进制存储为A,又因为地址为32位。所以内存中存储的值是0000000A;
同理a的地址在内存中存储为:0028FF18.(可以验证2686744(10进制)==0028FF18(16进制))。