检查结构数组是否为空

我该怎么做呢? 例如

typedef struct node { int data; struct node* next; }node; 

是我的节点,而我的主要是我的节点

  int main(){ node* array[10]; if (node[0].data == 0){ ... } 

我不确定我在这里需要做什么。 我希望能够检查数组中的这些条目是否已被修改。 我该怎么办? 我尝试过 – >运算符而不是。 这让我有些困惑,因为我正在处理一个对象不是我吗? 我不确定这一点。

根据建议,这就是我现在所拥有的。

  int main() { struct node* arr[10] = { 0 } ; addTo(data, arr); } addTo(int data, node* arr){ if (arr[0] == NULL) } 

最后一行是分段错误。

C中的数组不能为“空”。 他们永远不会空虚。 如果您声明了一个包含10个元素的数组,那么您将始终拥有10个元素的数组。 除非你自己想出一些方法来手动“标记”你修改的元素,否则没有办法说明某个元素是否已被修改。 例如,您可以选择一些保留元素值,它将指定一个“空”元素。

在你的情况下,你声明一个10指针的数组

 node* array[10]; 

如果您提供初始化程序

 node* array[10] = { 0 }; 

您的数组元素的初始值为null。 您可以将该值用作“空”元素的标记。

  node array[10]; //array of struct node type //node *array[10]; //this becomes declaration of array of pointers //assuming you have initialized all with 0. for(i=0;i<10;i++) if (array[i].data == 0) //data modified. //if you declare array of pointers check if(array[i]->data==0) 

您发布的代码不会导致崩溃,因为它甚至无法编译。 我修复了所有明显的错误以摆脱编译器错误,现在它在这里完美无缺地运行而不会崩溃:

 #include  #include  typedef struct node { int data; struct node* next; } node; /* changed node* to node*[] and added return type */ void addTo(int data, node* arr[]) { if (arr[0] == NULL) { puts("yes"); } else { puts("no"); } } int main() { struct node* arr[10] = { 0 } ; /* changed data to 42, because there is no variable data in scope here */ addTo(42, arr); } 

如果您有任何其他问题,请随时提出。