當前位置:文思屋>學習教育>考研>

常用面試題目空指標到底是什麼

文思屋 人氣:1.22W

語言定義中說明, 每一種指標型別都有一個特殊值—— “空指標” —— 它與同類型的其它所有指標值都不相同, 它“與任何物件或函式的指標值都不相等”。

常用面試題目空指標到底是什麼

也就是說, 取地址操作符& 永遠也不能得到空指標, 同樣對malloc() 的成功呼叫也不會返回空指標, 如果失敗, malloc() 的確返回空指標, 這是空指標的典型用法:表示“未分配” 或者“尚未指向任何地方” 的指標。

空指標在概念上不同於未初始化的指標。空指標可以確保不指向任何物件或函式; 而未初始化指標則可能指向任何地方。

如上文所述, 每種指標型別都有一個空指標, 而不同型別的空指標的內部表示可能不盡相同。儘管程式設計師必知道內部值, 但編譯器必須時刻明確需要那種空指標, 以便在需要的時候加以區分。

問題一: 什麼是空指標常量(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值的整數常量,叫做空指標常量)

解釋: 0、0L 、3 - 3(它們都是“integer constant expression”整數常量表達式)以及 (void*)0 等都是空指標常量(注意 (char*) 0 不叫空指標常量,只是一個空指標值)。

至於系統選取哪種形式作為空指標常量使用,則是實現相關的。

一般的 C 系統選擇 (void*)0 或者 0 的居多(也有個別的選擇 0L);

問題二: 什麼是空指標(null pointer)?

If a null pointer constant is converted to a pointer type, the resulting pointer, called a null pointer, is guaranteed to compare unequal to a pointer to any object or function. ( 如果一個 空指標常量 賦給了一個有型別的指標變數,那麼這個指標就叫空指標。它不指向任何的物件或者函式)

解釋:如果 p 是一個指標變數,

若進行: p = 0;、p = 0L;、p = '