我在C中有一個遞歸函數,我希望返回的結構指針成爲函數中的新結構。林具有返回的結構有問題,因爲它不change.this是我的代碼的結構:如何更改函數中的指針?
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;
}
林具有返回的結構有問題,因爲它並沒有改變。
它意味着通過相互引用來堆疊這些結構。
你可以發佈一個最小的工作計劃?你發佈的內容有錯誤的編譯錯誤,沒有足夠的邏輯來找到錯誤。 – 2013-03-24 11:03:50
確保x不會變成負面!你*真的*不會希望'm-> map [-1] ...'。 – Sebivor 2013-03-24 11:30:56