#include<stdio.h>
int main()
{
int i = 10;
int *p = &i;
printf("\n address of initialized pointer p: %u \n", p);
p = &(*p);
printf("\n modified address of initialized pointer p:%u value:%d valuez address: %d \n", p, *p, &(*p));
return 0;
}
代码输出: -澄清过左值,在C的指针的右值行为
初始化指针p的地址:3221221820
初始化指针p的修改地址:3221221820值:10 valuez地址: -1073745476
为什么“&(* p)”,在赋值语句和printf语句中的行为不同?
更新 对不起,只是格式说明符错误在printf;)。谢谢你的回复和指出。
它在%p和%u之间有什么不同? – Hemanth 2011-05-26 12:17:01
'%u'用于打印无符号整数,'%p'用于指针。 – 2011-05-26 12:17:54
感谢Prasoon,还有一个疑问,当我使用%p我得到0x7fbffff1bc,但是当我将由%u - 3221221820打印的值转换为十六进制时,我只得到bffff1bc。那么当我使用%p时,附加的额外0x7f是什么? – Hemanth 2011-05-26 12:19:59