我想将一个结构传递到一个(递归)函数中,每次调用该函数时,我都想更改它获取的属性的值,而不更新先前作用域中的实际值。
这是一些示例代码。这是实现这一点的正确方法吗? (“函数”文件中的函数调用需要具体帮助。
头文件
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;
}
最佳答案
您需要使用“复合文字”,它看起来像初始化程序之前的强制转换:
bool func1(Pos vars, int step) {
if (step == 2) {
return true;
}
func1((Pos){.x = vars.x + 1, .y = vars.y + 2}, step+1);
printf("%d %d", vars.x, vars.y);
return true;
}
此功能已添加到 C99 - 但由于您正在尝试使用指定的初始值设定项,因此这对您来说可能不是问题。
<小时/>关于c - 将结构体作为其单独的属性传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42494011/