空指標的理解

2021-09-06 19:08:55 字數 1228 閱讀 3448

空指標(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 的確返回空指標,這是空指...