如何在 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!
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn