bol*_*eto 5 c gcc visual-c++ gcc4
我阅读了return函数调用之间的值,
并尝试使用以下代码片段:
/* file structaddr.c */
#include <stdio.h>
#define MSIZE 10
struct simple
{
char c_str[MSIZE];
};
struct simple xprint(void)
{
struct simple ret = { "Morning !" };
return ret;
}
int main(void)
{
printf("Good %s\n", xprint().c_str);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译代码时没有错误和警告.
使用GCC 4.4.3(Ubuntu 4.4.3-4ubuntu5.1)和Visual C++编译器进行测试.
gcc -m32 -std=c99 -Wall -o test structaddr.c
cl -W3 -Zi -GS -TC -Fetest structaddr.c
Run Code Online (Sandbox Code Playgroud)
输出:
早上好!
我对结果感到有些困惑.
代码写得正确吗?
我的问题 :
函数return值的可见性是什么(上例中的数组
struct),以及如何正确访问它们?
哪里结束了一生的return价值?
在C中,printf表达式结束时,示例中临时的生命周期结束:
printf表达式结束时,示例中临时的生命周期结束.在C++中,示例中的生命周期与C中的生命周期相同:
printf表达式的最后一步被销毁.