[英]Check if C++ Array is Null
我该怎么做? 好吧,我想检查数组是否为空
C++ 中的数组不能为空; 只有指针可以为空。
要测试指针是否为空,您只需测试它是否等于NULL
或0
。
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 vector
或list
,则可以使用empty
或size
方法来检查是否为空:
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.