二十六回
二十七回
數組維數必須是大於等於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