避免使用未初始化的指標
對指標進行初始化或賦值只能使用以下四種型別的值:
把int型變數賦給指標是非法的,儘管int型變數的值可能為0.但允許把數值0或在編譯時可獲得0值的const量賦給指標。
3.void*指標
c++提供了一種特殊的指標型別void*,它可以儲存任何型別物件的位址
void*指標只支援幾種有限的操作:
4.2.5 指標和const限定符
1.指向const物件的指標
如果指標指向const物件,則不允許用指標來改變其所指的const值。為了保證這個特性,c++語言強制要求指向const物件的指標也必須具有const特性:
cptr是乙個指向double型別const物件的指標,const限定了cptr指標所指向的物件型別,而並非cptr本身。也就是說cptr本身並不是const。在定義時,不需要對它進行初始化,如果需要的話,允許給cptr重新賦值,使其指向另乙個物件。但是不能通過cptr修改其所指物件的值:
注意:不能使用指向const物件的指標修改基礎物件,然而如果該指標指向的是乙個非const物件,可以用其他方法修改其所指的物件。
C Primer 第4版 第4章 陣列和指標
p95 設計良好的程式只有在強調速度時才在類實現的內部使用陣列和指標。p96陣列的維數必須用值大於等於1的常量表示式定義。此常量表示式只能包含整型字面值常量 列舉型別或者用常量表示式初始化的整型const物件。非const物件以及要到執行階段才知道其值的const變數都不能用於定義陣列的維數。p97...
第4章陣列和指標
陣列的定義和初始化 注意 1.顯示初始化陣列元素 在函式體外定義的內建陣列,其元素均初始化為0 在函式體內定義的內建陣列,其元素無初始化 不管陣列在 定義,如果其元素為類型別,則自動呼叫該類的預設建構函式進行初始化,如果該類沒有預設建構函式,則必須為該陣列的元素提供顯式的初始化。2.特殊的字元陣列 ...
第4章 陣列和指標 8
4.3.1 建立動態陣列 陣列型別的變數有三個重要的限制 陣列長度固定不變,在編譯時必須知道長度,陣列只在定義它的塊語句內存在。雖然陣列長度是固定的,但動態分配的陣列不必在編譯時知道其長度,可以 通常也是 在執行時才確定陣列長度。與陣列變數不同,動態分配的陣列將一直存在,直到程式顯式釋放它為止。每乙...