0822每日一练分享

1. 谈谈结构体和数组的相似点和区别

答:数组是相同数据类型的元素按一定顺序排列而成的集合,是一种顺序表结构体。在C语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。
数组又可分为数值数组、字符数组、指针数组、结构体数组等各种类别。
结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。结构体在函数中的作用最主要的就是封装。
数组和结构体相似的地方是都不再是单一的原子类型,而是一个集合。区别在于数组是相同类型元素(元素可以是原子类型的整型、浮点型、字符型或者结构体体、数组等)的集合,而结构体是不同类型元素(元素可以是原子类型的整型、浮点型、字符型或者结构体体、数组等)的集合。
在取地址方面两者也有不同,数组的数组名就代表首地址,依次+1,+2……就可以表示其他元素的地址,不需要使用取地址运算符&;而结构体本身只是一系列不同类型元素的集合,本质上只是把很多类型的元素放在一起,以适应具体问题中数据(例如一个学生的成绩信息、商家的顾客信息等)的存储方式,所以取地址依然需要采用取地址运算。
两者的访问方式也不同,数组可以直接利用下标访问,而结构体必须使用结构体中成员的变量名。
结构体的定义一般放在主函数外面,这样其他函数就可以使用这种类型的结构体定义具体的结构体;而数组则由于定义和使用都较为简单,可以直接在需要使用的函数中定义即可。

2.执行下面代码后,数组里存放的值是什么

int m[5] = {1,2,3,4,5};
int i = 2;
int y = 10;
m[i++] += y;   

答:m[5]={1,2,13,4,5}
**在这里插入图片描述**

思考这个题目时我也遇到了想复杂了的一个小问题,就是我一开始认为m[i++]+=y是m[i++] = m[i++]+y;那么优先计算右边的m[i++]为m[2],值为3,所以=右侧为13,但是经过了i++,=左侧的i的初值就变成了3,所以变成了m[3] = m[2]+y;原数组中4被替换成了13。但我编译验证之后发现并不像我一开始想的那样,所以我就又去了解了一下+=这个运算符的作用,发现他和拆开的表达式还是有区别的,简单来说就是他直接就是m[2]=m[2]+y;一个加数和=左边的变量一定是一样的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值