关于数组一些理解
观察与思考下列语句:
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的第六个元素的地址,左值表达式的值确定了第六个元素的地址。
如有不对,大家批评指正