gpt4 book ai didi

c - 从函数返回结构变量而不创建中间变量的简写

转载 作者:太空狗 更新时间:2023-10-29 15:52:28 26 4
gpt4 key购买 nike

我已经开始学习 C89,并且正在深入研究结构。我的问题最好通过一个例子来解释。

想象一下这段代码:

typedef struct {
int x, y, r;
} Circle;

Circle createCircle(int x, int y, int r){
Circle create = {x, y, r};
return create;
}

int main(void){
Circle coords = createCircle(3, 2, 1);
return 0;
}

如您所见,我在函数 createCircle 中创建了一个变量 create,然后将其返回给主函数。我想知道是否存在某种形式的速记来省略这个中间步骤,例如:

Circle createCircle(int x, int y, int r){
return Circle {x, y, r};
}

当然,上面的方法行不通,但它应该让您了解我想要实现的目标。这可能吗,还是我最好先创建一个变量?

谢谢!

最佳答案

您正在寻找的构造称为复合文字,语法实际上与您的演示几乎相同。只需在类型周围添加括号:

return (Circle){x, y, r};

这是一个 C99 功能,用于为结构和数组等聚合创建文字(尽管它也可用于创建标量,有点违反直觉),类似于整数和其他标量文字。除了前面带括号的类型名称外,语法与初始化类型实例时一样。

与通常存在于数据段中的其他文字不同,复合文字被构造并驻留在它们创建的范围内的自动存储中(如果它们在全局范围内,则为静态的。)换句话说,使用临时命名的 Circle 是在机器代码级别实际上是相同的。

关于c - 从函数返回结构变量而不创建中间变量的简写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19843224/

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