毕竟,这两个语句都做同样的事情......
int a = 10;
int *b = &a;
printf("%p\n",b);
printf("%08X\n",b);
例如(具有不同的地址):
0012FEE0
0012FEE0
根据需要格式化指针很简单%x
,那么有什么好的用途吗%p
option?
他们不做同样的事情。后者printf声明解释b
as an unsigned int
,这是错误的,因为b
是一个指针。
指针和unsigned int
s 的尺寸并不总是相同,因此它们不可互换。当它们大小不同时(这种情况越来越常见,因为 64 位 CPU 和操作系统变得越来越普遍),%x
只会打印一半的地址。在 Mac(可能还有其他一些系统)上,will毁掉地址;输出将会错误。
总是使用%p
供指点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)