空指標(null pointer)
空指標:乙個被賦值為0的指標
1、空指標常量(null pointer constant)
an integer constant expression with the value 0, or such an expression cast to type void *, is called a null pointer constant.
乙個表示式的值為0或者為零的表示式被強制轉成 (void *)型別,都叫空指標常量
eg: 0 0l 3-3 (void *)0
注意 (char*) 0 不叫空指標常量,只是乙個空指標值
2、空指標(null pointer)
如果乙個 空指標常量 賦給了乙個有型別的指標變數,那麼這個指標就叫空指標。它不指向任何的物件或者函式
eg:p是乙個指標,進行 p = 0;、p = 0l;、p = '\0';、p = 3 - 3;、p = 0 * 17; 中的任何一種賦值操作之後
對於c語言還可以是 (void *)
p 成為乙個空指標,並且由系統保證空指標不指向任何實際的物件或者函式。 反過來說,任何物件或者函式的位址都不可能是空指標
3、 null
null 是乙個巨集定義(在/usr/include/linux/stddef.h 中定義), 表示乙個空指標常量
int *p=null; //p為乙個空指標
4、空指標的內部實現
標準沒有定義空指標指向記憶體的什麼位址,取決於系統的實現,
常見的空指標一般指向0x0位址
5、如何判斷某個指標是空指標
判斷其位址是否是0即可
假設 p 是乙個指標變數,q 是乙個同型別的空指標,要檢查 p 是否是乙個空指標
if ( p == 0 )
if ( p == '\0' )
if ( p == 3 - 3 )
if ( p == null ) /* 使用 null 必須包含相應的標準庫的標頭檔案 */
if ( null == p )
if ( !p )
if ( p == q )
malloc失敗時返回的是空指標
參考:
空型別指標(void 的理解
原文 void指標是空型別指標,它不指向任何型別,即void指標僅僅是乙個位址,所以空型別指標不能進行指標運算 也不能進行間接引用 因為指標運算和間接引用都需要指標的型別資訊 例如 void p 僅僅表示p存放乙個位址 p error 運算離不開指標型別 p 20.5 error 訪問p指向的變數空...
空型別指標(void 的理解
void指標是空型別指標,它不指向任何型別,即void指標僅僅是乙個位址,所以空型別指標不能進行指標運算,也不能進行間接引用 因為指標運算和間接引用都需要指標的型別資訊 p error 運算離不開指標型別 p 20.5 error 訪問p指向的變數空間需要變數型別資訊由於其他指標都包含有位址資訊,所...
關於空指標
臭名昭著的空指標到底是什麼?語言定義中說明,每一種指標型別都有乙個特殊值 空指標 它與同型別的其它所有指標值都不相同,它 與任何物件或函式的指標值都不相等 也就是說,取位址操作符 永遠也不能得到空指標,同樣對 malloc 的成功呼叫也不會返回空指標,如果失敗,malloc 的確返回空指標,這是空指...