【发布时间】:2017-05-24 20:08:47
【问题描述】:
我有编程课上的这段代码:
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 结束。出了什么问题,如何解决?
【问题讨论】:
-
欢迎来到 Stack Overflow。请花时间阅读The Tour 并参考Help Center 中的材料,您可以在这里问什么以及如何问。
-
您的列表 (
first) 是NULL,而您从未为其分配任何内存 -
调试器是解决此类问题的正确工具。 在询问 Stack Overflow 之前,您应该逐行逐行检查您的代码。如需更多帮助,请阅读How to debug small programs (by Eric Lippert)。至少,您应该 edit 您的问题包含一个重现您的问题的 Minimal, Complete, and Verifiable 示例,以及您在调试器中所做的观察。
-
您的函数希望所有列表节点都已分配。但是您将一个空列表传递给函数。
标签: c++ arrays list move tolist