struct类型的数组
0i已声明结构,如下所示:struct类型的数组,c,arrays,gcc,struct,C,Arrays,Gcc,Struct,0i已声明结构,如下所示: struct node { int num; struct node *ptr; }; typedef struct node NODE; 我有一个链表,有一个指针叫做first指向它 我还声明了上述类型的数组NODENODE*array[312500] 现在我想让数组[0]指向链表而不是第一个,所以我使用了array[0]->ptr=first 但这种方式给了我一个分段错误!!!可能有什么问题 您声明了指针
struct node
{
int num;
struct node *ptr;
};
typedef struct node NODE;
我有一个链表,有一个指针叫做first指向它
我还声明了上述类型的数组NODENODE*array[312500]代码>
现在我想让数组[0]指向链表而不是第一个,所以我使用了array[0]->ptr=first代码>
但这种方式给了我一个分段错误!!!可能有什么问题 您声明了指针数组,但从未为任何指针分配内存
NODE* array[312500];
是节点类型的312500个指针的数组*
如果只需要节点
s,那么说
NODE array[312500];
否则,你需要说
array[0] = (NODE*) malloc(sizeof(NODE));
然后你可以改变它的ptr,你声明了一个指针数组,但是没有为任何指针分配内存
NODE* array[312500];
是节点类型的312500个指针的数组*
如果只需要节点
s,那么说
NODE array[312500];
否则,你需要说
array[0] = (NODE*) malloc(sizeof(NODE));
然后您可以更改它的ptr
如果您忘记为阵列分配内存。
您只有一个指针数组。因此数组[0]->ptr
将给出分段错误。
首先为阵列分配内存:
for(i=0;i<312500;++i)
{
array[i]=(NODE*) malloc(sizeof(NODE));
}
对于(i=0;iptr
您忘记为阵列分配内存。
您只有一个指针数组。因此数组[0]->ptr
将给出分段错误。
首先为阵列分配内存:
for(i=0;i<312500;++i)
{
array[i]=(NODE*) malloc(sizeof(NODE));
}
用于(i=0;iptr
阵列[0]=(节点*)malloc(sizeof(节点));阵列[0]->ptr=first;这样做对吗?@TIMTAYLOR:是的,听起来不错。请记住,如果您想使用数组中的每个元素,您需要为它们分配内存,而不仅仅是第一个元素。还要记住,当您使用完后,您应该使用free
清理内存。数组[0]=(NODE*)malloc(sizeof(NODE));array[0]->ptr=first;这样做对吗?@TIMTAYLOR:是的,听起来不错。请记住,如果您想使用数组中的每个元素,而不仅仅是第一个元素,您需要为它们分配内存。同时请记住,在使用完后,您应该使用free
清理内存。