【发布时间】:2021-05-12 10:18:13
【问题描述】:
我有以下代码:
intlist* create_list(int *arr) {
intlist* l = malloc(sizeof(intlist));
while(*arr++) {
l->sum += *arr;
//*arr++;
}
return l;
}
void printl(intlist* l) {
printf("%d\n", l->sum);
}
当我在 while 循环内打印 *arr 时,它会显示正确的值。问题是在我退出函数 create_list 并尝试访问列表的总和后,这是完全错误的。例如,它不是 1 + 2 + 3 = 6,而是类似于 -123871239012。我做错了什么?
我不是在寻找将数组大小传递给的函数,因为根据我的观点和经验,在大多数情况下使用这种方法非常危险。我不想传递数组的大小,因为如果我不小心写了“1239123”而不是“1239122”,我可能会做坏事。或者更糟糕的是,如果我在最后一个地方没有按“3”时,不小心写了“1239123”而不是“123912”,那将会产生毁灭性的影响。
【问题讨论】:
-
我现在注意到,当我到达数组末尾时,while 循环并没有结束,而是实际上继续了几个循环。我该如何解决这个问题?
-
发布一个完整的程序,而不仅仅是它的片段。
-
这能回答你的问题吗? Passing Array Size along with pointer in c
标签: arrays c pointers while-loop function-definition