没有数组的结构的生命周期

问题描述

使用此代码:

#include <stdio.h>

struct S { int x; int y; };

struct S foo(int a,int b) {
    struct S s = { a,b };
    return s;
}

int main() {
    int a;

    a = foo(2,4).x;
    printf("%d\n",a);
    return 0;
}

它按预期工作。我担心的是返回的struct对象的生存期。我知道有关包含数组的结构的临时生存期的标准讨论,但是在这种情况下,结构中没有数组。

所以我猜想foo()一结束,它的返回值就应该死了,对吧?但是显然,我们仍然可以访问x成员。为什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)