【发布时间】:2017-02-27 19:18:21
【问题描述】:
我想将一个结构传递给一个(递归)函数,并且每次调用该函数时,我都想更改它获得的属性的值,而不更新前一个作用域中的实际值。
这里是一些示例代码。这将是实现这一点的正确方法吗? (“函数”文件中的函数调用需要具体帮助。
头文件
typedef struct Pos {
int x;
int y;
} Pos;
bool func1(Pos vars, int step);
主要
int main(int argc, char ** argv) {
Pos vars = {.x = 0, .y = 0};
if (func1(vars, 0)) {
return EXIT_SUCCESS;
}
return EXIT_FAILURE;
}
功能
bool func1(Pos vars, int step) {
if (step == 2) {
return true;
}
func1({.x += 1, .y += 2}, step+1);
printf("%d %d", vars.x, vars.y);
return true;
}
【问题讨论】:
-
不通过地址传递的参数会被自动复制,所以每次调用都有一个副本,不会影响调用者的副本。
-
func1({.x += 1, .y += 2}, step+1);-->func1((Pos){vars.x + 1, vars.y + 2}, step+1);或func1((Pos){vars.x += 1, vars.y += 2}, step+1);? -
@BLUEPIXY 这正是我想要的,谢谢。
标签: c