[英]Pointers in C(Value of a pointer)?
C語言:
如果(p)是聲明如下的指針:
int a=5, *p; p = &a;
* p將打印什么?
*p
不會“打印”任何東西; 那只是一個取消引用指針的表達式,並產生它指向的任何int
值。
您可以使用以下命令進行打印:
printf("*p=%d\n", *p);
由於p
指向a
,所以它將在程序中打印5
,而a
值為5
。
%d
很重要,它告訴printf()
期望一個int
值,並將其格式化為字符串以進行打印。
您還可以打印指針本身:
printf("p is %p, a is at %p\n", p, (void *) &a);
這將打印兩次相同的地址。 %p
格式說明符用於打印地址。
p是一個指向int的指針。 這意味着它可以指向一個將存儲int的地址。
寫作
p = &a
您將指針設置為指向存儲整數a的地址。
當您嘗試打印* p時,您將獲得存儲在指針p指向的地址中的值。 這樣您將得到5。
請記住,運算符&
返回變量的地址。 因此, &a
將返回變量a
的地址。 同樣,當您要獲取存儲在address中的變量的值時,如果有一個指針指向該地址,則可以使用解引用運算符*
。 因此, *p
返回存儲在p
指向的地址中的值。
p
是一個指向int
的指針, *p
是變量的值。 在這種情況下a
。 為簡單起見,您可以將&
視為the address of
, *
視為the content of pointer
。C指針5分鍾指南指出。
請記住, a
和p
只是名稱,它們代表變量。 假設地址a
就是1024
(這幾乎是真正的情況)。 它們的關系如下圖所示。 的值a
是5
,當我們使用p = &a
,我們分配的地址a
,這是1024
至p
。 *p
將檢索要查找的the address p pointer to
的值: 5
。
圖片http://cizixs.u.qiniudn.com/pointer
如果您要打印淡水河谷,@ unwind給出答案。
這是一個可以為您澄清c指針的教程。
p = &a;
p是指針AIE p成立的地址a
。 和
*p
將給出a的值。 因為&
用於獲取變量的地址,所以*
用於取消引用指針,即獲取指針指向的變量的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.