1、指针运算
合法的指针运算有:指针与整数的加减(包含指针的自增和自减)、同类型的两指针相减、同类型指针间的比较。
【指针与整数的加减】
指针加上一个整数的结果是另一个指针。因为指针就是地址,所以,指针加上一个整数的结果就是另一个地址。那么,它指向哪里呢?这个指针所指向的类型有关。我们知道,
char 1 byte 8 bit
short 2 byte 16 bit
int 4 byte 32 bit
double 8 byte 64 bit
例如:
int * p;
p+2;
这样使得指针的值增加8 byte,也就是2个int的大小。
【同类型的两指针相减】
只有当两个指针都指向同一个数组元素时,指针相减才有意义,结果是两个指针在内存中的距离,以数组元素的个数为单位,
不是以字节为单位。
例如:
int a[10];
int * p = a;
则 (p+2) - (p+4)= -2
【同类型指针间的比较】
< 、>、>=、<=运算。前提也是两指针指向同一个数组。
2、指针运算在数组中的应用
【初始化问题】
int a[] = {0,1,2,3,4,5,6,7,8};
int *p = a;
int *p1;
p1 = &a[4];
p1 = p+4;
a[4] = 15;
*(a+4) = 15;
*(p+4) = 15;
p[4] =15;
数组名表示地址,所以,int *p = a是正确的赋值。
p1指向了数组中的第5个元素。下标操作符[ ]给数组元素定位,然后使用取地址符&获取地址。当然也可以通过指针的运算p1 = p+4; 来指向数组中
的另一个元素。
a[4]、p[4]、 *(a + 4) 与 * (p + 4) 等价。指针p(a)加4,就是p指向的地址加4,再做*运算后,就表示具体的值了。
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/tfygg/article/details/46822243