如何在 C++ 中檢查指標是否為空指標

Jinku Hu 2023年10月12日
  1. nullptr 比較來檢查 C++ 中指標是否為空指標
  2. 在 C++ 中使用與 0 比較來檢查指標是否為空指標
  3. 在 C++ 中使用指標值作為條件來檢查指標是否為空指標
如何在 C++ 中檢查指標是否為空指標

本文將演示關於如何在 C++ 中檢查指標是否為空指標的多種方法。

nullptr 比較來檢查 C++ 中指標是否為空指標

C++ 語言提供了多種直接操作記憶體的低階函式,並規定了指標的概念,即指向記憶體地址的物件。通常情況下,指標應該指向某個被執行程式利用的物件。雖然,我們也可以將指標宣告為不指向任何物件的空指標。

一個空指標是通過分配字面的 nullptr 值或用整數 0 來初始化的。但請注意,現代 C++ 建議避免用 0 初始化指標,因為當使用過載函式時,可能會導致不理想的結果。在下面的例子中,我們檢查指標是否不等於 nullptr,如果滿足條件,我們就可以對其進行操作。

#include <iostream>

using std::cout;
using std::endl;

#define SIZE 123

int main() {
  char *arr = (char *)malloc(SIZE);

  if (arr != nullptr) {
    cout << "Valid pointer!" << endl;
  } else {
    cout << "NULL pointer!" << endl;
  }

  free(arr);
  return EXIT_SUCCESS;
}

輸出:

Valid pointer!

在 C++ 中使用與 0 比較來檢查指標是否為空指標

還有一個名為 NULL 的預處理變數,它的根基在 C 標準庫中,並且經常在舊版程式碼使用。請注意,在當代 C++ 程式設計中不建議使用 NULL,因為它相當於用整數 0 初始化,可能會出現上一節所說的問題。不過,我們還是可以通過比較指標與 0 來檢查指標是否為空指標,如下面的程式碼示例中演示。

#include <iostream>

using std::cout;
using std::endl;

#define SIZE 123

int main() {
  char *arr = (char *)malloc(SIZE);

  if (arr != 0) {
    cout << "Valid pointer!" << endl;
  } else {
    cout << "NULL pointer!" << endl;
  }

  free(arr);
  return EXIT_SUCCESS;
}

輸出:

Valid pointer!

在 C++ 中使用指標值作為條件來檢查指標是否為空指標

當空指標用於邏輯表示式時,它們被判斷為 false。因此,可以在 if 語句條件中傳入一個給定的指標,以檢查它是否是空指標。請注意,取消引用空指標會導致未定義的行為,在大多數情況下會導致程式異常終止。

#include <iostream>

using std::cout;
using std::endl;

#define SIZE 123

int main() {
  char *arr = (char *)malloc(SIZE);

  if (arr) {
    cout << "Valid pointer!" << endl;
  } else {
    cout << "NULL pointer!" << endl;
  }

  free(arr);
  return EXIT_SUCCESS;
}

輸出:

Valid pointer!
作者: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 創辦人。Jinku 在機器人和汽車行業工作了8多年。他在自動測試、遠端測試及從耐久性測試中創建報告時磨練了自己的程式設計技能。他擁有電氣/ 電子工程背景,但他也擴展了自己的興趣到嵌入式電子、嵌入式程式設計以及前端和後端程式設計。

LinkedIn Facebook

相關文章 - C++ Pointer