函数返回结构体后,能否直接访问其内部成员而无需处理整个结构体?
直接访问返回结构体的成员是否可行?
可以直接访问返回结构体的成员,但具体要看你使用的C语言标准版本:
C99及后续标准:完全支持你示例中的写法,直接通过
functionReturningStruct().value2就能获取成员值。编译器会自动生成一个临时结构体对象存储函数的返回值,你无需手动声明临时变量,直接访问成员即可。完整可运行的示例代码:
#include <stdio.h> struct myStruct { int value1; int value2; }; struct myStruct functionReturningStruct(void) { struct myStruct s = {10, 20}; return s; } int main(void) { int value2 = functionReturningStruct().value2; printf("value2: %d\n", value2); // 输出结果为20 return 0; }C89标准:这种直接访问的写法不被支持,必须先将函数返回的结构体赋值给一个临时变量,再通过变量访问成员:
struct myStruct temp = functionReturningStruct(); int value2 = temp.value2;
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

