如果您有一个返回结构的函数,那么是否可以访问返回的结构中的任何内部值,而不必处理整个结构。
代码可能看起来像这样;
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;
}