#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