const修飾指針
const int *p = &a; // 這裏const修飾的是*,不能通過*p修改p所指空間的內容,即a的值
int * const p = &a; // 這裏const修飾的是p,不能改變指針變量p的指向,p保存的地址不能修改
const int * const p = &a; // 都不能修改
野指針
野指針就是指針指向的位置是不可知的(隨機的、不正確的、沒有明確限制的)指針變量在定義時如果未初始化,其值是隨機的,指針變量的值是別的變量的地址,意味着指針指向了一個地址是不確定的變量,此時去解引用就是去訪問了一個不確定的地址,所以結果是不可知的。
空指針
在編程語言中,空指針(Null Pointer)是一個已宣告但並未指向一個有效對象的指針,許多程序利用空指針來表示某些特定條件,例如未知長度數組的結尾或某些無法執行的操作。在可選擇類型(optional type)的編程語言中,空指針通常可以跟可為Null的類型(Nullable types)和空值(Nothing value)進行比較。
空指針與未初始化的(Uninitialized_variable)指針(uninitialized pointer)不同,空指針保證不會和有值的指針相等,而未初始化的指針則是要看所使用的編程語言或編譯器而定,在部分編程語言環境下,未初始化的指針無法保證不與有值的指針相等,他可能因為存有存儲器殘值而指向了某個有效對象。