c-访问返回结构中的值



如果您有一个返回结构的函数,那么是否可以访问返回的结构中的任何内部值,而不必处理整个结构。

代码可能看起来像这样;

struct myStruct
{
int value1;
int value2;
};
myStruct functionReturningStruct(void);
....

value2 = functionReturningStruct().value2

如果可能的话,怎么办?

为什么不进行测试?

#include <stdio.h>
struct myStruct
{
int value1;
int value2;
};
struct myStruct functionReturningStruct(void)
{
return (struct myStruct){10, 20};
}
int main(void)
{
int value = functionReturningStruct().value2;
printf("%d", value);
return 0;
}

这是可能的。

我发现的实现使用了指向结构的functionReturningStruct()的隐式第一个参数,该结构是编译器在调用点临时分配的。

事实上,它相当于

{
struct myStruct __temp_myStruct;
__actual_functionReturningStruct(&__temp_myStruct);
value2 = __temp_myStruct.value2;
}

最新更新