Я пишу довольно сложную программу по сравнению с тем, с чем я имел дело до сих пор. В любом случае, в какой-то момент я должен написать функцию, которая будет манипулировать структурным списком. Я пытаюсь сделать этот вопрос как можно более простым, поэтому я написал довольно простой фрагмент кода только для справки.
Вот в чем дело: сначала я вызываю testf
из другой функции, предоставляя ей действительный current
, а также i
со значением 0. Это означает, что 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
этой функции) ) или я ужасно неправ?
Если да, как можно изменить переменные функции вызывающей стороны внутри вызываемой функции и быть уверенным, что они не исчезнут, как только вызванная функция вернется? Мне трудно понять, как работают указатели.
Весьма вероятно, что я пропустил важную информацию или недостаточно четко задал вопрос. Пожалуйста, сообщите мне, если это так, чтобы я мог редактировать все, что вам нужно.
Заранее спасибо.