对于数组元素的使用,采用的是数组名加下标的方式。
比如有数组 int a[10]; 里面10个元素分别是 a[0]、a[1]、a[2]......a[9]。
通常对于数组,我们使用循环处理,例如有变量 int i;
在循环里面 i 的值从 0-9变化,那么a[i] 就依次对应数组第一个元素 a[0]到最后一个元素a[9]。
引用数组元素,还有另外两种方式。
首先,我们要知道数组名a代表的含义,它表示的是首地址,数组第一个元素a[0]的地址。数组在内存空间位置是固定的,地址不变,这也就是为什么不能给数组名a赋值或者改变它的值。
那么a+1是什么意思呢?很多人误以为,那就是首地址加一呗。a+1表示的是数组里面第二个元素的地址。也就是说不管是int类型的数组,每个int元素占4个字节,还是char类型的数组,每个元素占1个字节,a+1对应的都是a[1]的地址,这个加一可不是地址具体的值+1。那对应 a+i表示a[i]的地址。
知识点回顾:
&是取地址运算符,如有 int a; 即有一个小盒子里面存放的数据起名叫a,&a就是取a的地址,即该盒子的编号。
*(地址)是取值运算符,这里*是解引用操作符,可以理解成打开对应地址编号的盒子,取出里面的数据。*(&a) 就是打开a对应的小盒子,取出里面的数据,即*(&a)和a等价。
a+i 等价于 &a[i]
*(a+i) 等价于 a[i]
第二种方式就是直接使用指针来引用数组元素。定义指针 int *p;
使用p=a;或者p=&a[0]让指针指向数组第一个元素a[0],那么通过指针p的移动,如p++等也可以遍历数组所有元素。
代码示例(3种方式,通过循环给数组a里面10个元素依次赋值1-10):
for(i=0;i<10;i++)
a[i] = i+1;
for(i=0;i<10;i++)
*(a+i) = i+1;
for(p=a,i=0;i<10;i++,p++)
*p = i+1;
学习有困难怎么办,快来加入微信群和大家交流吧。