【发布时间】:2012-02-01 06:09:19
【问题描述】:
我一直在编写一个与我之前处理过的程序相比相当复杂的程序。无论如何,在某些时候我应该编写一个操作结构列表的函数。我试图让这个问题尽可能简单,所以我写了一段非常简单的代码仅供参考。
事情是这样的:起初我从另一个函数调用testf,为它提供了一个有效的current以及一个值为0的i。这意味着testf之前会调用自己大约100次它开始访问其余的代码。这是所有生成的testf 实例将开始解析的时间。
void testf(listnode *current, int *i) {
wordwagon *current2;
current2 = current;
if (*i < 100) {
*i = *i + 1;
current2 = current2->next;
testf(current2, i);
}
current = current->next;
return;
}
假设我有足够的连接列表节点可供我使用,current = current->next; 是“最后一个”testf 函数访问和编辑调用者的 current2 值的正确方法(这是这个函数的 current ),还是我大错特错?
如果我是,那么从被调用函数内部更改调用函数变量并确保它们不会在被调用函数返回后立即消失的方法是什么?我发现很难很好地掌握指针的工作原理。
很可能是我遗漏了重要信息,或者我的问题问得不够清楚。如果是这种情况,请通知我,以便我可以根据您的需要进行编辑。
提前致谢。
【问题讨论】:
-
你必须将指针传递给指针,或者在递归之前修改
current -
+1 提供一个简单的例子
标签: c pointers recursion pass-by-reference