C语言结构体成员定义引用问题
我想通过图中的这种(而不是A.age=10;A.class=3这样赋值),先定义,后赋值的方式给结构体成员赋值,12行一直报错,求解决方法。...
我想通过图中的这种(而不是A.age = 10; A.class = 3这样赋值),先定义,后赋值的方式给结构体成员赋值,12行一直报错,求解决方法。
展开
1个回答
展开全部
没有
A={
.age=10;
.class=3;
};
这种赋值方法,改成
A.age=10;
A.cass=3;
或
B->age=10;
B->class=3;
都行。
另:class是C++关键字,若使用的是C++兼容的C编译器,则过不了编译,应另起一名,如Class,或classs等。
追问
但是为嘛struct student A = {.age = 10, .class = 3,}这样确可以赋值呢,我只是把把这一步拆分开了啊
追答
我没有见struct student A = {.age = 10, .class = 3,}这种赋值方法,只见过struct student A = {10, 3};这种方法。
以上也不叫“赋值”,叫“初始化”。赋值要由C的语句完成,而“初始化”则是由编译器完成的。
就像int a[3]={1,3,9};可以,这叫“初始化”,而写成int a[3];a={1,2,3}则是错误的——因为C不允许对数组或结构体或联合体进行“整体”赋值。你在代码中分开写了,所以是非法的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询