2014-04-01 215 views

回答

1

p是一個指向int的指針,*p將是變量的值。在這種情況下,a。只是爲了簡單起見,您可以將&視爲the address of,*作爲the content of pointer,因爲這篇文章The 5-minute Guide to C Pointers指出。

記得ap是唯一的名字,它們代表一個變量。假設a的地址是1024(這幾乎不是真實的情況)。他們的關係如下圖所示。 a的值是5,當我們使用p = &a時,我們將a的地址,即1024分配給p*p將檢索值the address p pointer to,這是您正在尋找的值:5

pic http://cizixs.u.qiniudn.com/pointer

如果你要打印的淡水河谷,@unwind給出了答案。

Here是一個教程,可能會澄清c指針給你。

5

*p不會「打印」任何東西;這只是一個表達式,它引用指針,併產生任何指向它的值。

您可以打印:

printf("*p=%d\n", *p); 

,它會在你的程序在a打印5因爲p點,並a5

%d很重要,它告訴預期值爲int,並將其格式化爲打印字符串。

您還可以打印指針本身:

printf("p is %p, a is at %p\n", p, (void *) &a); 

這將打印相同的地址兩次。格式說明符%p用於打印地址。

1

p是一個指向int的指針。這意味着它可以指向一個地址,其中將存儲一個int。

寫作

p = &a 

你設置的指針指向在整數的地址被存儲。

當您嘗試打印* p時,您將獲得存儲在指針p指向的地址中的值。所以你會得到5.

請記住,運算符&返回一個變量的地址。所以&a將返回變量a的地址。另外,當你想獲得存儲在地址中的變量值時,如果你有一個指向這個地址的指針,你可以使用解引用運算符*。因此,*p返回存儲在p指向的地址中的值。

0
p = &a; 

p是指向a的指針。即p保持地址a。和

*p 

會給出一個值。由於&用於獲取變量的地址,因此*用於取消引用指針,即獲取指針所指向的變量的值。