关于struct的定义

来源:3-1 结构体的声明和定义

Jessibel

2017-03-24 17:28

在struct里定义char 类型必须用数组形式吗? 

char name[20]能不能改成char name?

不能的话存在什么错误?

为什么下面定义的int类型的atk和price没有写成atk[20]和price[20]?

写回答 关注

2回答

  • qq_莫离丶相伴_1
    2017-05-17 19:26:41
    已采纳

    char类型的数据是一个字符型数据 比如char name='a'; 而人的名字是多个字符组成,所以需要用一维数组进行存放,而后面的atk指的是攻击力 而int型数据范围一般是0-2^32,所以只需要一个int就ok了 例如 ak-74的攻击力为500 我们可以写为 atk=500; 价格同理 你说的如果 后面代表攻击力的与价格的变成一个数组 那么它们可以存放多个武器的价格与攻击力, 与需求不符 所以没有用数组。。你要自己练一练就知道了  

    慕丝3566...

    那20能不能换成别的数呢?

    2019-11-06 21:03:51

    共 2 条回复 >

  • 宝慕林2456239
    2017-03-24 22:39:00

    首先char name[20]应该不可以改成char name。然后,char定义字符类型的数据占1个字节,int定义整型数据占2个字节。我猜,char name[20]的最后一个地址应该是int atk 数据存放的上一个地址,为防止名字过长溢出,影响到后面int atk里存放的数据,所以给char name 加上[20]。最后,没有给int atk和int price加上长度限制是因为int的声明已经足够存放数据所以不用加[]。我想其实应该是可以给int atk 和int price加长度限制的,这里面的一些原理我没懂得很透彻,所以只能帮你到这里了~~不知道对错,请后面看到的人指点,这只是本人一点浅薄的看法~抛砖引玉用~

Linux C语言结构体

C语言的深入,帮助小伙伴们进一步的理解C语言,赶紧看过来

118294 学习 · 162 问题

查看课程

相似问题