C에서 재귀 함수가 있고 반환 된 구조체 포인터가 함수의 새 구조체가되기를 원합니다. 이 변경 나던 때문에 반환 된 구조체에 문제가함수에서 포인터를 어떻게 변경합니까?
struct location_t{
int x,y;
location_t * next;
int dir;
}
location_t * recursive_foo(location_t * loc, maze_t * m){
int x = loc->x;
int y = loc->y;
int dir = loc->dir;
loc->next = malloc(sizeof(location_t));
location_t * temp = loc->next;
if(m->map[--x][y] != '#' && dir != 0){
temp->x = x;
temp->y = y;
temp->dir = 2;
loc = recursive_foo(temp);
}
if(m->map[--x][y] != '#' && dir != 1){
temp->x = x;
temp->y = y;
temp->dir = 3;
loc = recursive_foo(temp);
}
if(m->map[--x][y] != '#' && dir != 2){
temp->x = x;
temp->y = y;
temp->dir = 0;
loc = recursive_foo(temp);
}
if(m->map[--x][y] != '#' && dir != 3){
temp->x = x;
temp->y = y;
temp->dir = 1;
loc = recursive_foo(temp);
}
return loc;
}
임 :이 change.this 나던 때문에 반환 된 구조체에 문제가 임 내 코드의 구조입니다.
서로를 참조하여 이러한 구조체를 쌓아 넣습니다.
당신이 최소한의 작업 프로그램을 게시 할 수 있습니까? 게시 한 내용에는 오타가 포함되어 있으며 버그를 찾기에는 논리가 충분하지 않습니다. –
x가 음수가되지 않도록하십시오! 당신은 정말로'm-> map [-1] ... '을 원하지 않을 것입니다. – Sebivor