在C语言中,用指针变量引用数组元素时,有一些容易出错的问题,下面我们详细介绍一下几种情况。
工具/原料
假设有一个数组为 a[ ],一个指针变量是 p。
情况如下:
1、数组名是常量不能进行自加自减运算,因为数组名代表的书数组的首地址,是不变的。p是一个指针变量,可以指向数组中的任何一个元素。
2、对于整型数组a来说,a++,和++a是不能实现的,因为不能对常量进行自加自减运算,只能对变量进行自加自减运算。
3、若指针变量p依宏氽墓指向a的元素a[0],要区分以下情况:(1)p++:相当于p=p+1。使得p指向下一个元素a[1],则*p为元素a[1]的值;
4、(2)*p++:结合方向为自右至左因此等价于*(p++)。先得到p所指向的值*p,在进行p++运算;
5、(3)*(p++)与*(++p)作用不同,前者是先取*p的值,然后使p自加1,相当于*p++,后者是先使p自加1,再取*p的值。
6、(4)(*p)++:表示p所指向的元素值自加1;
7、(5)如果p当前指囿鹣分胰向a数组中第i个元素,即p=&a[i]。则有如下关系:1) *(p--),相当于a[i--],先对p进行*蠕蒜唏怜运算,再使p自减。2) *(++p),相当于a[++i],先使p自加,再作*运算