我该怎么做?例如
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)
}
最后一行是分段错误。
答案 0 :(得分:3)
C中的数组不能为“空”。他们永远不会空虚。如果您声明了一个包含10个元素的数组,那么您将始终拥有10个元素的数组。除非你自己想出一些方法来手动“标记”你修改的元素,否则没有办法说明某个元素是否已被修改。例如,您可以选择一些保留元素值,这将指定一个“空”元素。
在您的情况下,您声明一个包含10个指针的数组
node* array[10];
如果您提供初始化程序
node* array[10] = { 0 };
您的数组元素的初始值为null。您可以将该值用作“空”元素的标记。
答案 1 :(得分:2)
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)
答案 2 :(得分:1)
您发布的代码不会导致崩溃,因为它甚至无法编译。我修复了所有明显的错误以摆脱编译器错误,现在它在这里完美无缺地运行而不会崩溃:
#include <stdio.h>
#include <stdlib.h>
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);
}
如果您有任何其他问题,请随时提出。