c语言中 %p的含义


今天看到了一个%p,表示没有看到过。 = =。学习了。


       格式控制符“%p”中的p是pointer(指针)的缩写。指针的值是语言实现(编译程序)相关的,但几乎所有实现中,指针的值都是一个表示地址空间中某个存储器单元的整数。

printf函数族中对于%p一般以十六进制整数方式输出指针的值,附加前缀0x(自测的输出没有加前缀0)。


// 示例:
  int i = 1;
  printf("%p",&i);
//相当于
  int i = 1;
  printf("0x%x",&i);

对于32位的指针,输出一般会是类似0xf0001234之类的结果。


         %p存在的理由除了附加前缀输出的便利性以外(表示没有体验到 = =),如LS所说,指针的大小是不确定的,由实现决定。根据地址空间的大小,一般有16位、32位、64位的指针。尽管目前32位平台上的指针一般全是32位的,但旧的一些平台上可能有多种长度的指针(例如非标准的near、far、huge修饰的pointer)混用,无法用%x、%lx、%hx、%llx(对应int、long、short、long long)中的任意一种保证能输出所有类型的指针。


%p 一个简洁的解释。。。 = = 。


  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值