c-struct.field返回另一个值,为什么



我的目标是创建一个自定义struct类型的fisrt。运行时,打印出24。无法理解原因:

#include <stdio.h>
typedef struct strktura {
    int number;
    char name;
} strktura;
strktura new_one(int number, char name){
    strktura a;
    a.number=number;
    a.name=name;
}
main()
{
        strktura first=new_one(2,"A");
        printf("%dn",first.number);
}

您忘记从new_one()调用return

相关阅读:摘自第6.9.1章第12段,C11文件,

如果达到了终止函数的},并且调用方使用了函数调用的值,则行为是未定义的。

因此,在您的代码中,如果没有来自new_one()return,并且通过printf("%dn",first.number);访问返回值,您将面临未定义的行为。

此外,值得一提的是,main()的正确语法是int main(),(匹配的return 0是一种很好的做法。)

您需要添加一个

return a;

在您的new_one()函数中,以便从函数new_one)返回结构

相关内容

最新更新