C语言结构体成员定义引用问题

我想通过图中的这种(而不是A.age=10;A.class=3这样赋值),先定义,后赋值的方式给结构体成员赋值,12行一直报错,求解决方法。... 我想通过图中的这种(而不是A.age = 10; A.class = 3这样赋值),先定义,后赋值的方式给结构体成员赋值,12行一直报错,求解决方法。 展开
 我来答
White_MouseYBZ
2019-05-17 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6605万
展开全部

没有

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,}这样确可以赋值呢,我只是把把这一步拆分开了啊
追答
  1. 我没有见struct student A = {.age = 10, .class = 3,}这种赋值方法,只见过struct student A = {10, 3};这种方法。

  2. 以上也不叫“赋值”,叫“初始化”。赋值要由C的语句完成,而“初始化”则是由编译器完成的。

  3. 就像int a[3]={1,3,9};可以,这叫“初始化”,而写成int a[3];a={1,2,3}则是错误的——因为C不允许对数组或结构体或联合体进行“整体”赋值。你在代码中分开写了,所以是非法的。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式