我對指針的誤解

int ival = 1024;
int *pi = &ival;
int **ppi = π

int *pi2 = *ppi;

指針變量pi,ppi,pi2;都是將右值賦值到變量,

將&ival賦值給指針變量pi,

將&pil賦值給指針變量ppi,

將 *ppi賦值給指針變量pi2,

而不是*ppi=&pi,*pi2=*ppi。這是我理解錯誤的地方,一定要改正。

對指針進行初始化或賦值只能使用以下四種類型的值:


1.   0 值常量表達式(第 2.7 節),例如,在編譯時可獲得 0 值的整型const 對象或字面值常量 0,除了使用數值0或在編譯時值爲 0 的const 量外,還可以使用 C++ 語言從 C 語言中繼承下來的預處理器變量NULL(第 2.9.2 節),該變量在 cstdlib 頭文件中定義,其值爲 0。如果在代碼中使用了這個預處理器變量,則編譯時會自動被數值 0 替換。因此,把指針初始化爲NULL 等效於初始化爲 0 值。


2.   類型匹配的對象的地址。


3.   另一對象末的下一地址。


4.   同類型的另一個有效指針。

發佈了7 篇原創文章 · 獲贊 16 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章