2013年(53)
分类: C/C++
2013-08-26 22:37:22
在一定的条件下,两个指针可以进行比较运算,即可进行大于、小于、大于等于、小于等于、相等和不等的运算。任意的毫无关联的两个指针进行比较是毫无 意义的。例如,指向同一个数组的两个指针可以进行比较。如果两个指向同一个数组的指针相等,则表示这两个指针是指向同一个元素,否则两个指针不等,表示这 两个指针不是指向同一个元素,而是指向两个不相同的元素。
[例7.3] 把一个字符串中的字符逆序输出。
程序内容如下:
Main()
{
Char s[]="abcdefgh"
Char*p
For(p=s+7;p+1!=s;p--)
Print("%c"*p)
Printf{"\n")
}
执行该程序输出结果如下:
hgfedcba
说明:程序中,定义了一个字符数组s,又定义了一个char型指针P.通过指针加上整数运算,先使指针P指向已知字符串的最后一个字符h,再输出p所指向 的字符,每次循环p指针减1,判断p+1与S是否相等,s是数组名,即是指向数组首元素的指针。如果P十1与s相等,则说明P将指向该数组首元素前边的一 个元素,该元素实际是不存在的,这时退出for循环,并完成对该字符串的逆序输出。
该例中关于指针运算的应用有如下几点:
(1)指针赋值。p=s十7;是一个赋值表达式语句,将s+7的值赋给指针P。
(2)指针加减整数运算oP一一是指针减1表达式。
(3)指针比较运算。p+1!=s,是一个关系表达式,判断P+1与s是否相等。