我的目标是创建自定义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);
}
答案 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()
返回结构