-4

我有来自编程课的这段代码:

void ToList(List *first, int *arr, int n) {
    List *p = first;
    for(int i=0; i<n; i++) {
       p->x = arr[i];
       if (p->next != NULL) p = p->next;
    }
}  

我调用它是为了将 Array 元素传输到 List:

int main() {

const int N = 10;
int m[N] = {5, 8, 1, 7, 2, 6, 9, 4, 0, 3};

List *first = NULL;

ToList(first, m, N);
PrintList(first);

我遇到“分段错误”——程序以退出代码 139 结束。出了什么问题,如何解决?

4

1 回答 1

1

看起来你取消引用一个NULL指针:

main

List *first = NULL;

ToList

List *p = first; // first = NULL
...
p->x = arr[i]

因此,您需要首先分配列表。

于 2017-05-24T21:08:13.703 回答