C++有问题的函数,数组到列表

C++ problematic function, Array to List

本文关键字:数组 列表 函数 有问题 C++      更新时间:2023-10-16

我有来自编程类的代码:

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;
    }
}  

我调用它是为了将数组元素传输到列表:

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 完成。出了什么问题,如何解决?

看起来您取消引用了NULL指针:

main

List *first = NULL;

ToList

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

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