繁体   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