C 指標空值nullptr

2021-09-22 08:28:21 字數 1150 閱讀 2784

在良好的c/c++程式設計習慣中,宣告乙個變數時應該給該變數乙個合適的初始值,否則可能會出現不可預料的錯誤,比如未初始化的指標。如果乙個指標沒有合法的指向,我們基本都是按照如下方式對其進行初始化:

void testptr()

null實際是乙個巨集。null可能被定義為字面常量0,或者被定義為無型別指標(void*)的常量。

我們在使用空值的指標時,都不可避免的會遇到一些麻煩,比如:

void f(int)

{ cout<<"f(int)"《解釋:

程式本意是想通過f(null)呼叫指標版本的f(int*)函式,但是由於null被定義成0,因此與程式的初衷相悖。

雖然null既可以被定義為字面常量0,也可以是無型別的指標(void*)常量,但是編譯器預設情況下將其看成是乙個整形常量0,如果要將其按照指標方式來使用,必須對其進行強轉(void *)0

為了考慮相容性,c++11並沒有消除常量0的二義性,c++11給出了全新的nullptr表示空值指標。c++11為什麼不在null的基礎上進行擴充套件,這是因為null以前就是乙個巨集,而且不同的編譯器廠商對於null的實現可能不太相同,而且直接擴充套件null,可能會影響以前舊的程式。因此:為了避免混淆,c++11提供了nullptr, 即:nullptr代表乙個指標空值常量。nullptr是有型別的,其型別為nullptr_t

注意:

1、在使用nullptr表示指標空值時,不需要包含標頭檔案,因為nullptr是c++11作為新關鍵字引入的。

2、 在c++11中,sizeof(nullptr)sizeof((void*)0)所佔的位元組數相同。

3.、為了提高**的健壯性,在後續表示指標空值時建議好使用nullptr。

CPP11新特性 指標空值nullptr

在良好的c c 程式設計習慣中,宣告乙個變數時最好給該變數乙個合適的初始值,否則可能會出現不可預料的錯誤,比如未初始化的指標。如果乙個指標沒有合法的指向,我們基本就是按照如下方式對其進行初始化 void testptr null實際是乙個巨集,在傳統的c標頭檔案 stdef.h 中,可以看到如下 i...

空指標 從 0 到 NULL,再到 nullptr

nullptr null 是乙個巨集定義 undef null if defined cplusplus define null 0 else define null void 0 endifint my ptr 0 int my ptr null null 的問題 include void f c...

C C 的空指標,NULL,0和nullptr

在c和c 中,null和0都可以使用。c通常使用null,c 通常使用0 include int main void include using namespace std int main 1 void foo char 2 int main void foo int 1 void foo cha...