C语言——指针的运算
1、指针 + - 整数
#include<stdio.h>
#define N_VALUES 5
int main()
{
flout values[N_VALUES];
flout *vp;
for(vp=&values[0];vp<&values[N_VALUES];) //指针的关系运算
{
*vp++=0; //指针+整数
}
}
2、指针 - 指针
#include<stdio.h>
int main()
{
int arr[10]={1,2,3,4,5,6,7,8,9,10}
printf("%d\n",&arr[9] - &arr[0]);
return 0;
}
指针 - 指针得到的是两个指针之间的元素个数
前提——两个指针指向同一快空间
3、指针的关系运算
for(vp = &values[N_VALUES];vp > &values[0];)
{
*--vp = 0;
}
简化:
for(vp = &values[N_VALUES-1];vp > &values[0];vp--)
{
*vp = 0;
}
实际在绝大部分编译器上事可以顺利完成的,然而我们还是避免这样写,因为标准不保证可行
标准规定:
允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较,但是不允许于指向第一个元素之间的那个内存位置的指针进行比较。