저는 지금까지 내가 처리 한 프로그램과 비교하여 상당히 복잡한 프로그램을 작성했습니다. 어쨌든 어느 시점에서 구조체 목록을 조작 할 함수를 작성해야합니다. 나는이 질문을 가능한 한 간단하게하려고 애쓰며 그래서 나는 단지 참조 용으로 아주 간단한 코드를 적어 둔다. 여기 재귀 함수에서리스트 노드에 대한 포인터를 편집하려면 어떻게해야합니까?
는 일 : 제 I 유효한current
뿐만 아니라, 0이 값을 갖는
i
함께 제공하는 다른 기능에서
testf
전화에 그 나머지 액세스를 시작하기 전에 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;
}
경우에, 나는, "마지막"testf 기능 (이 기능의 current
인)에 액세스하고 발신자의 current2
값을 편집하기위한 올바른 방법 current = current->next;
내 처분에 충분한 연결리스트 노드입니다 한의 말을하자, 또는 나는 끔찍하게 틀린가? 호출 된 함수 내부에서 호출자 함수의 변수를 변경하고 호출 된 함수가 반환 되 자마자 사라지지 않도록하는 방법은 무엇입니까? 나는 포인터가 작동하는 방법에 대해 잘 이해하는 것이 어렵다고 느낍니다.
중요한 정보를 빠뜨린 것, 또는 제 질문을 명확하게하지 않은 것 같습니다. 그렇다면 알려 주시면 필요한 내용을 편집 할 수 있습니다.
미리 감사드립니다.
당신은 POI를 통과해야 포인터를 돌려 주거나 재현하기 전에'current'를 수정하십시오. –
간단한 예제를 제공하기 위해 +1 –