我确实认为在C中没有空array
这样的东西,我在想是否可以让它们像其他语言一样指向null,也许如果它的某些元素具有价值信息,然后他们不再那么让他们再没有任何意义......但我真的想不出任何方式这样做。
答案 0 :(得分:1)
如果数组未初始化,那么您的程序无法确定是否仅基于数组。你需要记住"那些信息本身,例如:
#include <stdbool.h>
int main (void)
{
int a[3] ;
bool a_empty = true;
// ...
if ( a_empty )
printf("a is empty");
// ...
a[0] = 1;
a_empty = false;
}
另一种方法是将一组特定内容定义为表示&#34;空&#34; (这称为哨兵值):
#include <stdbool.h>
enum { EMPTY = -1 };
bool is_empty(int a[3])
{
return a[0] == EMPTY && a[1] == a[0] && a[2] == a[0];
}
int main (void)
{
int a[3] = { EMPTY, EMPTY, EMPTY };
// ...
if ( is_empty(a) )
printf("a is empty");
}
当然,您必须选择不是预期数组内容的有效数据的标记。如果不存在这样的标记,那么你别无选择,只能使用我的第一个例子中的额外变量。
答案 1 :(得分:-2)
您可能能够创建一个空数组,然后比较您的数组,如果它相同则数组为空,否则它必须包含一些内容。
void isEmpty(int *a)
{
int compare[3]
if ( a == compare[2])
printf("is empty!\n") ;
else
printf("not empty!\n");
}
int main (void)
{
int a[3] ;
isEmpty(a) ;
a[0] = 1 ;
isEmpty(a) ;
return 0 ;
}
我没有机会对此进行测试,但之前在PHP中做过类似的事情。