c/c++语言开发共享函数返回值的生命周期是多少?

我读到了函数调用之间的return值,
并尝试使用以下代码段:

 /* file structaddr.c */ #include  #define MSIZE 10 struct simple { char c_str[MSIZE]; }; struct simple xprint(void) { struct simple ret = { "Morning !" }; return ret; } int main(void) { printf("Good %sn", xprint().c_str); return 0; } 

编译代码时没有错误和警告。
使用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 

输出:
早上好 !

我对结果感到有些困惑。
代码写得正确吗?

我的问题 :

    在C中,示例中临时的生命周期在printf表达式完成时结束:

    在C ++中,示例中的生命周期与C中的生命周期相同:

    函数xprint返回结构的副本,编译器将此副本存储在临时文件中,临时文件生命周期是printf函数调用的持续时间。 当printf函数返回时,该临时对象将被销毁。

      以上就是c/c++开发分享函数返回值的生命周期是多少?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/562543.html

      (0)
      上一篇 2021年2月5日
      下一篇 2021年2月5日

      精彩推荐