C++ Null 指針的使用

原文鏈接:https://www.zhoubotong.site/post/85.html

這裏有必要說下關於空指針的使用注意事項, 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;
}

輸出:

image.png

上面我們定義了一個指針,該指針沒有進行任何的初始化,接着,我們打印了該指針變量的值,我們發現,輸出是 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;
}

輸出:

image.png

上面我們顯式的將指針變量 pa 賦值爲了 NULL,在大多數的操作系統上,程序不允許訪問地址爲 0 的內存,
因爲該內存是操作系統保留的。但是內存地址 0 有特別重要的意義,它表明該指針不指向一個可訪問的內存位置。

但是按照慣例,如果指針包含空值(零值),則表示它不指向任何東西。
上面我們用if判斷空指針,這裏順帶說明下, 如需檢查一個空指針,我們可以使用 if 語句:

if(ptr)     \* 如果 ptr 非空 */
if(!ptr)    \* 如果 ptr 爲空 */

總結:

我們在定義指針時或者指針使用完畢,不再使用時,推薦將指針設置爲 NULL,表明該指針不再指向任何數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章