4.3 指针的运算
1.指针只支持两种算术运算。
1).指针 +/- 整数
只能用于数组中某个元素的指针。
例子:
1 #include <stdio.h>
2
3 int init_a(int *a)
4 {
5 a[0] = 1;
6 a[1] = 4;
7 a[2] = 8;
8 }
9
10 void main()
11 {
12 int a[3];
13 int *p;
14
15 init_a(a);
16 p = &a[0];
17
18 printf("*p = %d,*(p+2)=%d\n",*p,*(p+2));
19 }
20 运行:
21 wyj@t468 ~ $ ./a.out
22 *p = 1,*(p+2)=8
2).指针 - 指针
只能用于两个指针都指向同一个数组中的元素时。
例子:
1 #include <stdio.h>
2
3 void main()
4 {
5 int a[5];
6 int *p1,*p2;
7
8 p1 = &a[0];
9 p2 = &a[4];
10 printf("sizeof (int) = %d\n",sizeof(int));
11 printf("a[0] addr = %p , a[4] addr = %p\n",p1,p2);
12 printf("&a[4] - &a[0] = %d\n",p2 - p1);
13 }
14 运行:
15 wyj@t468 ~ $ ./a.out
16 sizeof (int) = 4
17 a[0] addr = 0xbff0f914 , a[4] addr = 0xbff0f924
18 &a[4] - &a[0] = 4
2.指针的关系运算
两个指针都指向同一个数组中的元素,可用这个关系运算符:< , <= , > , >= , == ,!=