我刚刚尝试使用C,我试图将列表放入列表中。问题是,当它打印数组 - >计数时,当我尝试更改数组 - > head-> x时,它会显示分段错误。我做错了什么?我还没有完成我的程序,所以这就是为什么我使用宏。
#include <stdio.h>
#include <stdlib.h>
#define N 3
typedef struct smallList{
int x;
struct smallList *next;
} smallList;
typedef struct bigList{
int count;
struct bigList *next;
smallList *head;
} bigList;
void main(void)
{
bigList *array = (bigList*)malloc(sizeof(bigList));
array->count = 3;
printf("%d \n", array->count);
array->head->x = 10;
printf("%d \n", array->head->x);
}
答案 0 :(得分:2)
您尚未为数组中的head
变量分配内存。 malloc
array
空间后尝试
array->head = malloc(sizeof(smallList));
答案 1 :(得分:1)
此处发生分段错误,因为您尝试访问未分配内存的数据结构。你应该为head
指针分配内存。这可以通过
array->head = malloc(sizeof(smallList));
您问题的有效代码是:
#include <stdio.h>
#include <stdlib.h>
#define N 3
typedef struct smallList{
int x;
struct smallList *next;
}smallList;
typedef struct bigList{
int count;
struct bigList *next;
smallList *head;
}bigList;
void main(void)
{
bigList *array = malloc(sizeof(bigList));
array->head = malloc(sizeof(smallList));
array->count = 3;
printf("%d \n", array->count);
array->head->x = 10;
printf("%d \n", array->head->x);
}