簡體   English   中英

檢查 C++ 數組是否為空

[英]Check if C++ Array is Null

我該怎么做? 好吧,我想檢查數組是否為空

C++ 中的數組不能為空; 只有指針可以為空。

要測試指針是否為空,您只需測試它是否等於NULL0

C++ 中的數組不能為“空”。 定義數組對象時,您明確指定數組的確切大小。 該數組包含(並將始終包含)您在定義中指定的確切數量的元素。 不多不少。 它永遠不會是“空的”。

實際上,當你有一個數組 a[SIZE] 時,你總是可以檢查:

 
 
 
 
  
  
  if( NULL == a ) { /*...*/ }
 
 
 

但這不是必需的,除非您創建了一個動態數組(使用運算符 new)。

查看其他答案,我不會因為它現在被接受而刪除它。 如果接受其他答案,我將刪除此“答案”。


編輯(將近 4 年后:))

當我為此獲得很多反對票時,我想澄清一下:我知道這是無用的,並且a永遠不會為 NULL,但它從技術上回答了有關NULL部分的問題。

是的,這並不意味着,數組是空的,一點沒有 正如@JamesMcNellis 在下面指出的那樣,數組不能為 NULL,只能為指針。

它僅對在分配之前具有初始化指針的動態分配數組有用。

無論如何,我會等待接受其他答案並刪除我的答案。

您可以使用靜態或“動態”數組。 靜態數組類似於以下內容:

int array[5];

這表示一個包含 5 個整數元素的靜態數組。 這種數組不能為空,它是一個由 5 個未定義整數組成的數組。

另一方面,“動態”數組將是這樣的:

int* array = new array[5];

在這種情況下,指向 int 的指針指向一個包含 5 個元素的數組。 這個指針可能為空,你可以用一個簡單的 if 語句來檢查這種情況:

if (array == 0)

如果您使用的是 STL vectorlist ,則可以使用emptysize方法來檢查是否為空:

std::vector<int> v;
if (v.empty()) cout << "empty\n";
if (v.size() == 0) cout << "empty\n";
std::list<int> l;
if (l.empty()) cout << "empty\n";
if (l.size() == 0) cout << "empty\n";

常規 C++ 數組(如int a[]') or pointer (like int* a)不知道其大小。

對於使用 size 聲明的數組(如int a[42]作為局部或全局變量或類成員),您可以使用sizeof(a) / sizeof(a[0])來獲取聲明的大小(示例中為42 ),通常不會是 0。您以這種方式聲明的數組永遠不會是NULL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM