簡體   English   中英

關於C ++指針和此PowerPoint幻燈片的困惑不大

[英]little confusion regarding C++ pointers and this powerpoint slide

來自視頻的圖片,由ReelLearning提供

在上面的幻燈片中,為什么會這樣:

int* p = &x; 
cout << *p << endl;

輸出25? 從對指針的一點了解來看,&x是x的地址,它分配給* p,即p的值。 在那種情況下,由於&x是0003,那么* p和它的輸出也應該是0003嗎?

對於所有無法忍受像我這樣簡單的高級編碼人員,我對“提前”表示歉意。

&x是x的地址,分配給* p

不,沒有分配給*p 在該行中, p被定義為int*類型,並且p被分配了x的地址。

現在p擁有地址0003, *p擁有25。

*僅與該行中的變量定義有關。 在初始化期間,將值分配給定義的變量。 如果不是這種情況, p應該首先指向哪里? 那么應該將0003寫入哪個位置?

幻燈片令人困惑,因為它表明指針變量的名稱為*p 變量的名稱僅為p

當打印表達式p ,將獲得0003 ,因為那是指針的值。

因此,指針指向地址0003處的對象,表達式*p從此處獲取值25。

幻燈片最好說單元格0001的名稱為p 該單元格0003有兩個名稱(或到達該路徑的路徑),分別是直接x或間接*p

當我們聲明指針時,我們將*與數據類型一起使用,例如int *p這並不意味着我們要同時聲明和引用value。

所以當您輸入int *p = &x; 它類似於寫作

int *p;
p = &x;

現在p0003 ,地址0003的值是25 您可以通過* p獲得。

引用運算符(&)引用變量x的地址,該變量分配給p 。由於p持有一個內存位置的地址,因此它是指針類型(int *) 。現在(* p),其中(* )是引用運算符(*)表示p中的地址所保存的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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