c - 有没有办法创建一个空的 C 数组,并在更新它时跟踪它的空性?

标签 c arrays

我确实相信不存在空的 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/

相关文章:

javascript - 防止 if 语句中的错误 "is undefined"

javascript - 如何在javascript中触发onwheel事件向上和向下效果?

c - 为什么在 C 中使用 `sigsetjmp` 而不是 `setjmp` 函数?

c - 如何将结构作为参数传递

c - 64位平台下的4字节指针?

C: 无法将文件中的行存储到数组中

c# - (lib)mpg123 在 C# 中使用函数 mpg123_index

php - 引用返回的数组值的好习惯

javascript - 如何在 jQuery 中连接数组值但格式化它们?

javascript - 从json中获取所有时间戳