我确实相信不存在空的 array
这样的东西在C中,我在想是否我们可以让它们像在其他语言中那样指向空,也许如果它的一些元素有有值(value)的信息,然后它们不再指向空,那么让它们再次指向空……但我实在想不出有什么办法可以做到这一点。
最佳答案
如果数组未初始化,那么您的程序无法仅根据该数组来确定该数组。您需要自己“记住”该信息,例如:
#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;
}
另一种方法是将一组特定的内容定义为表示“空”(这称为哨兵值):
#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");
}
当然,您必须选择对于预期数组内容来说不是有效数据的标记。如果不存在这样的哨兵,那么您别无选择,只能使用额外的变量,如我的第一个示例中所示。
关于c - 有没有办法创建一个空的 C 数组,并在更新它时跟踪它的空性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42437130/