Jessibel
2017-03-24 17:28
在struct里定义char 类型必须用数组形式吗?
char name[20]能不能改成char name?
不能的话存在什么错误?
为什么下面定义的int类型的atk和price没有写成atk[20]和price[20]?
char类型的数据是一个字符型数据 比如char name='a'; 而人的名字是多个字符组成,所以需要用一维数组进行存放,而后面的atk指的是攻击力 而int型数据范围一般是0-2^32,所以只需要一个int就ok了 例如 ak-74的攻击力为500 我们可以写为 atk=500; 价格同理 你说的如果 后面代表攻击力的与价格的变成一个数组 那么它们可以存放多个武器的价格与攻击力, 与需求不符 所以没有用数组。。你要自己练一练就知道了
首先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语言结构体
118294 学习 · 162 问题
相似问题