关于数组一些理解

qq_33934540 2017-08-19 09:48:20
观察与思考下列语句:
int a[100];
a[5]=20;
在int a[100];是一维数组说明语句,作用是在程序运行前分配内存空间。在这个语句中,有int,a,[],100.它们的各自含义是什么?先看a,是标示符,标识啥?后面的[ ]是数组类型符,说明一个数组,要用[ ]来说明,于是我们给这个数组取了个名字叫a.再看int 它说明了数组元素的类型。[ ]里面的100是整型表达式,表达了什么?表达了指定数组的个数。
a[5]=20;
注意这里的a[5]=20;与int a[100];比较,后者是先定义了a是一个有100个int类型的数组,而前者是在后者基础上,对这个一维数组的元素的访问。
在a[5]里,有a和[ ],以及5. a是数组名,表示数组的起始地址,[ ]在这里不是数组类型说明符,是下标运算符,在[ ]的左边a这个操作数是地址(指针),5是右操作数是偏移值,就是说明了这个元素离起始地址的距离(偏移就有这个含义)。[ ]计算过程如下:
a + 5* sizeof(int)
凡是指针都有关联类型,所以在a[5]中语义是:下标运算通过指针的地址。指针的关联类型和偏移值计算地址,并以名访问对象。所以在这里a[5]=20;赋值号的左边a[5]运算的结果是数组a的第六个元素的地址,左值表达式的值确定了第六个元素的地址。
如有不对,大家批评指正








...全文
183 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
大米粥哥哥 2017-08-19
  • 打赏
  • 举报
回复
我竟然看完了

64,636

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧