我的目标是创建一个自定义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)返回结构