我该怎么做?好吧,我想检查数组是否为空
答案 0 :(得分:18)
C ++中的数组不能为null;只有一个指针可以为null。
要测试指针是否为空,只需测试它是否等于NULL
或0
。
答案 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 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
。