检查C ++数组是否为空

时间:2010-10-04 16:32:32

标签: c++ arrays null

我该怎么做?好吧,我想检查数组是否为空

5 个答案:

答案 0 :(得分:18)

C ++中的数组不能为null;只有一个指针可以为null。

要测试指针是否为空,只需测试它是否等于NULL0

答案 1 :(得分:9)

C ++中的数组不能为“空”。定义数组对象时,显式指定数组的确切大小。该数组包含(并且始终包含)您在定义中指定的确切数量的元素。不多也不少。它绝不会是“空的”。

答案 2 :(得分:6)

实际上,当你有一个数组[SIZE]时,你总是可以检查:

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

但是没有必要,除非你创建了一个动态数组(使用operator new)。

请参阅其他答案,我不会因为它现在被接受而删除它。如果接受其他答案,我将删除此“答案”。


编辑 (差不多4年后:))

由于我得到了很多这方面的投票,我想澄清一下:我知道这是无用的,而a 永远不会为NULL,但它在技术上回答了关于NULL部分的问题。

是的, NOT 意味着,数组是空的, NOT 。正如@JamesMcNellis所述,数组不能是NULL,只能是指针。

在分配之前,它只对带有初始化指针的动态分配数组有用。

无论如何,我会等待接受其他答复并删除我的。

答案 3 :(得分:3)

您可以使用静态或“动态”数组。静态数组将类似于以下内容:

int array[5];

表示由5个整数元素组成的静态数组。这种数组不能为null,它是一个包含5个未定义整数的数组。

另一方面,“动态”数组将是这样的:

int* array = new array[5];

在这种情况下,指向int的指针指向一个包含5个元素的数组。这个指针可以为null,你可以用一个简单的if语句检查这个例子:

if (array == 0)

答案 4 :(得分:1)

如果您使用的是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