我有以下简单的代码但是它会引发分段错误。有人能指出我做错了吗?我输入第一个数字后出现分段错误。
#include <stdio.h>
#include <stdlib.h>
struct linked_list {
int val;
struct linked_list *next;
} *curr, *head;
typedef struct linked_list list;
void createLinkedList(int num);
void main() {
int i;
head = NULL;
int num = 0;
for (i = 0; i < 10; i++) {
printf("Enter a number:");
scanf("%d", num);
createLinkedList(num);
}
curr = head;
while(curr) {
printf("%d\n", curr->val);
head = curr->next;
}
}
void createLinkedList(int n) {
curr = (list *)malloc(sizeof(list));
curr->val = n;
curr->next = head;
head = curr;
}
感谢。
答案 0 :(得分:4)
您正在读取数字错误。 scanf
获取一个指向整数的指针,因此它试图分配给内存位置0,这是无效的。使用&
引用num
的内存位置。
以下是更正后的版本:
scanf("%d", &num);