簡體   English   中英

C中的指針(指針的值)?

[英]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分鍾指南指出。

請記住, ap只是名稱,它們代表變量。 假設地址a就是1024 (這幾乎是真正的情況)。 它們的關系如下圖所示。 的值a5 ,當我們使用p = &a ,我們分配的地址a ,這是1024p *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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM