gpt4 book ai didi

c - 将结构体作为其单独的属性传递给函数

转载 作者:行者123 更新时间:2023-11-30 16:49:41 25 4
gpt4 key购买 nike

我想将一个结构传递到一个(递归)函数中,每次调用该函数时,我都想更改它获取的属性的值,而不更新先前作用域中的实际值。

这是一些示例代码。这是实现这一点的正确方法吗? (“函数”文件中的函数调用需要具体帮助。

头文件

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 - 但由于您正在尝试使用指定的初始值设定项,因此这对您来说可能不是问题。

<小时/>

我看到 BLUEPIXYcomment 中指出了这个符号直到添加此答案后我才阅读。
我制作了这个社区 Wiki。

关于c - 将结构体作为其单独的属性传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42494011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com