何為指標 四 指標,解引用和左值

2021-08-10 10:38:31 字數 936 閱讀 3712

6.7 指標,解引用和左值
包含指標的表示式可以用來做左值嗎?如果可以的話,是那個?我們回到先前的例子。給出下面的宣告:

int  a;

int* d=&a;

考慮下面的表示式:

表示式

左值表達的位置

ayesad

yesd

*dyes

a

指標變數可能被用作左值,不是因為他們是指標,而是因為他們是變數,應用解引用指標變數,說明我們應該要跟蹤指標。解引用識別記憶體的乙個特殊位置,所以我們可以使用解引用表示式的結果作為左值。

下面幾條語句:

*d=10-*d;

d=10-*d; //

<--???

第一條語句包含兩個解引用。表示式右邊作為右值被使用,所以他讀取d指向記憶體的值(a的值)。解引用在左邊被當做乙個左值,所以d指向的位置接受乙個通過右邊計算得到的新值。

第二條語句是非法的,因為他指示乙個整數儲存到乙個指標變數中。當我們使用的變數在上下文中與他的型別不一致時,編譯器會通過提示幫助我們。這些錯誤和警告資訊是你的朋友。編譯器通過生成他們幫助你。儘管我們都不願意處理這些資訊,但是這是改正錯誤的乙個好方法,尤其是那些不會終止編譯的警告資訊。編譯器明確的告訴你錯誤的位置比你除錯程式之後在結局問題容易的多。偵錯程式不會和編譯器一樣定位問題。

老式的編譯器當指標和整型變數被混合時沒有任何抱怨。然而,我們知道現在好多了。把指標轉換為整數,或者反過來,正真有用的情況很少。通常這些轉換是無意中的錯誤。

7 4 指標和引用

7.4.1指標的好處 1.可以動態分配記憶體。2.對多個相似變數進行一般訪問。3.為動態資料結構,尤其是樹和鍊錶提供支援 4.遍歷陣列,解析字串。5.高效的按引用複製陣列和結構。7.4.2 引用還是指標 1.指標本質是儲存位址的變數,指標則是 從一而終 的別名,且不能為空 2.作為引數傳遞,二者不同...

011 指標的引用

指標的引用 if 1 struct teacher int getteacher teacher p teacher tmp tmp teacher malloc sizeof teacher 1 if tmp null tmp age 1111 p tmp p就像一把鑰匙,通過位址去開啟一扇門,p...

1 指標和引用的區別

1 什麼是指標?2 什麼是引用?引用 引用是乙個物件的別名,主要用於函式引數和返回值型別,符號x 表示x型別的引用。1 引用不可以為空,但指標可以為空。引用是物件的別名,引用為空 物件都不存在,怎麼可能有別名!所以定義乙個引用的時候,必須初始化。宣告指標是可以不指向任何物件,因此,使用指標之前必須做...