1.指针变量和整数的算术运算
在C语言中规定,如果指针变量p已指向数组中的某个元素,则表达式p+1表示让指针变量p指向下一个元素的地址。以此可以进一步得出如下结论,假定有如下定义及语句(其中n为一个正整数)。
(1)表达式p+n:表示使指针变量p从当前所指元素向后移到第n个元素的地址处。例如,p+2表示数组元素a[7]的地址。
(2)表达式p-n:表示使指针变量p从当前所指元素向前移到第n个元素的地址处。例如,p-2表示数组元素a[3]的地址。
(3)表达式++p:先使指针变量p指向下一个数组元素。例如,表达式++p在运算时,先使p指向下一个数组元素a[6],表达式的值为a[6]的地址。
(4)表达式——p:先使指针变量p指向上一个数组元素。例如,表达式——p在运算时,先使p指向上一个数组元素a[4],表达式的值为a[4]的地址。
(5)表达式p++:表示指针变量p所指数组元素的地址,运算结束后,使指针变量p指向下一个数组元素。例如,表达式p++的值为a[5]的地址,表达式运算结束后,使指针变量p指向下一个数组元素a[6]。
(6)表达式p——:表示指针变量p所指数组元素的地址,运算结束后,使指针变量p指向上一个数组元素。例如,表达式p——的值为a[5]的地址,表达式运算结束后,使指针变量p指向上一个数组元素a[4]。
下面讨论一种特殊情况,就是当指针变量p指向数组首地址时,即p指向数组元素a[0]时,p+i或a+i表示a[i]的地址,或者说它们指向a数组的第i个元素。*(p+i)或*(a+i)就是p+i或a+i所指向的数组元素,即a[i]。例如,表达式p+5或a+5表示&a[5],表达式*(p+5)或*(a+5)表示数组元素a[5]。(www.xing528.com)
2.指针之间的减法运算
当两个指针变量指向同一个数组时,它们之间可以进行减法运算,运算结果为它们所指向的数组元素下标之差的整数值。例如:
则n的值为3,m的值为3。
3.指针之间的关系运算
在同一个数组中,还可以对数组元素的指针进行关系运算。例如,有如下定义和语句。
则有下面表达式及其值。
也可以将指针变量与0比较。设p为指针变量,若表达式p==0的值为1,则表明p是空指针,它不指向任何变量;若表达式p!=0的值为1,表示p不是空指针。空指针是由对指针变量赋予0值得到的。例如:
对指针变量赋值为0和不赋值是不同的。当指针变量未赋值时,它可以是任意值,是不能使用的,否则将造成意外错误。对指针变量赋值为0后,则可以使用,只是它不指向具体的变量而已。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。