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

时间:2015-02-09 11:27:42

标签: c struct

我的目标是创建自定义fisrt类型的struct。 运行时,打印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("%d\n",first.number);
}

2 个答案:

答案 0 :(得分:5)

您忘记了return的{​​{1}}。

相关阅读:从第6.9.1章第12段new_one()文件

开始
  

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

因此,在您的代码中,如果没有来自C11的{​​{1}}并通过return访问返回值,那么您将面临undefined behaviour

另外,值得一提的是,new_one()的正确语法是printf("%d\n",first.number);,(匹配main()是一种很好的做法。)

答案 1 :(得分:0)

您需要添加

return a;
在new_one()函数中

,以便从函数new_one()

返回结构