9.3 数组的指针和指向数组的指针变量

图9.15 数组内存布局示意图

一个普通变量有地址,一个数组包含若干个元素,每个数组元素在内存中也都是占有存储单元的(并且是连续的存储单元),所以也都有相应的地址。指针变量既可以指向普通变量,也可以指向数组和数组元素(把数组开始地址或者某一个数组元素地址放到一个指针变量中)。所谓数组的指针是指数组的起始地址,数组元素的指针是指数组元素的地址。

引用数组元素可以用下标法,如a[3],也可以用指针法,也就是通过指向数组元素的指针找到对应的数组元素。看看下面这行代码:

那么该数组的内存布局示意图如图9.15所示。

前面曾经说过,数组名等于数组首地址(数组第一个元素的地址),所以数组名a等价于&a[0],因为[]优先级高于&,所以是取得a[0]的地址,也就是图9.15中的1000那个编号所表示的地址,所以a等价于&a[0]也等价于1000。这里可以设置断点并注意观察,当然这里1000这个地址编号可能与实际观察到的地址编号不一样,但道理都是完全相同的。