這裏有必要說下關於空指針的使用注意事項, C++ 中,如果一個指針不指向任何數據,就稱之爲空指針,用 NULL 表示。
注意,NULL 是區分大小寫的,即 NULL 不能寫成 null。
C++ NULL指針
定義
#define NULL ((void *)0)
說明
(void *)0
表示把數值 0 強制轉換爲 void *
類型,最外層的 ( ) 把 宏定義 的內容括起來,進行宏定義時也推薦這麼做,防止發生歧義。
頭文件
NULL 定義在 stdio.h
頭文件中。
舉個例子吧:
#include <iostream>
using namespace std;
int main()
{
cout << "草堂筆記(www.zhoubotong.site)\\n" << endl;
int *ptr ;
cout << "ptr = " << ptr << endl;
return 0;
}
輸出:
上面我們定義了一個指針,該指針沒有進行任何的初始化,接着,我們打印了該指針變量的值,我們發現,輸出是 0,當然也可以像下面這樣定義:
#include <iostream>
using namespace std;
int main() {
cout << "草堂筆記(www.zhoubotong.site)\\n" << endl;
int *ptr = NULL;
cout << "ptr = " << ptr << endl;
if (!ptr) {
cout << "prt爲空指針\\n" << endl;
}
return 0;
}
輸出:
上面我們顯式的將指針變量 pa 賦值爲了 NULL,在大多數的操作系統上,程序不允許訪問地址爲 0 的內存,
因爲該內存是操作系統保留的。但是內存地址 0 有特別重要的意義,它表明該指針不指向一個可訪問的內存位置。
但是按照慣例,如果指針包含空值(零值),則表示它不指向任何東西。
上面我們用if判斷空指針,這裏順帶說明下, 如需檢查一個空指針,我們可以使用 if 語句:
if(ptr) \* 如果 ptr 非空 */
if(!ptr) \* 如果 ptr 爲空 */
總結:
我們在定義指針時或者指針使用完畢,不再使用時,推薦將指針設置爲 NULL,表明該指針不再指向任何數據。