C++ Primer筆記(第26回---28回)

二十六回

二十七回

數組維數必須是大於等於1的常量表達數,下圖2中的三個箭頭所指的地方都是不行的,因爲數組維數必須是常量,注意:第三個 SZ  這個量,雖然前面聲明瞭是 const常量,但它的值是函數get_size()的返回值,而函數的返回值在編譯時是沒有值的,只有在運行時纔有值,而數組的維數必須在編譯時就能確定的常量表達式!

 使用局部數組之前必須對其進行初始化(因爲局部變量,系統不會默認給初值)

seze_t 專門用來做數組的下標的類型(如下圖)

第二十八回

注意,指針的定義有2種寫法(圖1),但是要注意第二種寫法不推薦,因爲在圖二中,ps1是一個指針,而ps2不是一個指針,而這種寫法很容易產生歧義。

定義2個指針的正確寫法如下圖所示

如果一個指針保存的是0,那麼表示這個指針不指向任何對象(下圖)

對指針的常規操作如下圖所示,注意,裏面有一條沒有對指針進行初始化的語句,沒有初始化的指針是非常危險的,要儘量避免出現沒有初始化的指針

把變量賦值給指針變量是錯誤的,如下圖所示就是錯誤的

將一個在編譯時就能確定的常量  賦值給  指針變量  是可以的(如下圖)

自己寫的常量(0除外)不能賦值給指針變量,如下圖是不可以的

注意:NULL是一個宏定義,就是0

注意:一個指針只能指向同類型的對象,所以下面圖中的紅色框部分是不可以的,因爲 pd 這個指針指向double型變量,pi7 這個指針指向的是 int 型變量

下圖也是不行的,犯了和上圖同樣的錯誤

注意萬能指針(下圖是正確的)

注意指針和引用的區別

指針,可以先聲明,聲明時可以不進行初始化,然後接下來通過賦值對指針進行初始化。而引用,必須在聲明時就進行初始化,下圖中,紅框1的部分是可以的,紅框2的部分是不對的

注意,指針和引用的第二個區別在於:指針所指向的對象是可以改變的,而引用一旦引用了一個對象後就不可以再改變引用其他對象(下圖中,第一個紅框是正確的,第二個紅框是錯誤的,或者說,第二個框 ri = ri2 所表達的意思其實是:將ival2的值賦值給了ival)

 指針的指針

下圖中,第一個紅框部分中的 ppi  是指針的指針,而第二個紅框部分,這個 **ppi 表示對 ppi 進行雙重解引用,所以這個 **ppi 表示的是 pi 所指向的值  ival,即1024

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章