假定有如下定义。
那么,可以有多种形式引用数组元素。
1.用指针表达式引用数组元素
例如,表达式*(p+3)引用了数组元素a[3],表达式中的3是相对于指针的偏移量。当指针指向数组的起始位置时,偏移量说明了引用哪一个数组元素,它相当于数组的下标。上述表示法称为指针偏移量表示法,简称为指针表示法。用指针表示法引用数组元素a[i]的一般形式如下:
例如,表达式*(p+2)引用了数组元素a[2]。需要注意的是“*”的优先级高于“+”的优先级,所以括号是必需的。
使用指针表达式也可引用数组元素的地址。用指针表示法引用数组元素a[i]地址的一般形式如下:
例如,表达式p+2引用了地址&a[2]。
2.用数组名表达式引用数组元素
数组名本身就是一个指针,也可在指针表达式运算中引用数组元素。
通常,所有带数组下标的表达式都可以用指针和偏移量表示,这时要把数组名作为指针。相应地,引用数组元素a[i]的一般形式如下:
引用数组元素a[i]地址的一般形式如下:
注意:上面的表达式并没有修改数组名指针a的值,a仍然指向数组的第一个元素。
3.指针也可带下标
例如,p[i]引用了数组元素a[i]。
当指针变量p保存数组a的首地址时,数组元素a[i]的地址的表示形式有3种:&a[i]、p+i或者a+i。
相应地,数组元素a[i]的引用方法有以下4种,大致分为作下标法和指针法两类。用下标法引用数组元素:a[i]、p[i]。
用指针法引用数组元素:*(a+3)、*(p+3)。
如果要对一维数组中的元素进行操作,可以用多种形式来引用数组中的元素。
【例8-3】用多种形式引用数组元素。
方法1:(www.xing528.com)
例8-3 运行视频
方法2:
方法3:
方法4:
以上4种方法的运行结果一样,如图8-4所示。
图8-4 例8-3的运行结果
在通过指针引用数组元素时应注意以下几个问题。
(1)指针变量可以实现自身值的改变。比如,p++是合法的,而a++是错误的。因为a是数组名,数组名表示数组首地址,是指针常量。
(2)指针变量可以指向数组的任何元素,要注意指针变量的当前值。
在定义数组时指定其长度为10,即数组包含10个元素,但指针变量可以指向数组之后的内存单元,系统并不认为非法。例如:
在上述程序的循环语句中,当p=a+10时,即p指到数组a之后的内存单元,并不认为是非法,但已经超出数组a的范围,所以循环结束。也就是说,当p指向数组元素时,进行相应的操作,一旦超出数组a的范围,就停止操作。
(3)注意运算符++、--、&和*的混合运算。
*p++:++和*是同一优先级,结合方向自右而左,等价于*(p++)。
*(p++)与*(++p)的作用不同。若p的初值为a(a为数组名),则*(p++)等价于a[0],而*(++p)等价于a[l]。
(*p)++:表示p所指向的元素的值加1。
如果p当前指向a数组中的第i个元素,则有*(++p)相当于a[++i];*(--p)相当于a[--i]。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。