8.3.2 指针的算术运算
指针可以做加法和减法的算术运算,相当于指针的位置从这一位置向后或向前移动若干个单元。这里移动的单元,指的是可以存储相应的变量的内存空间。下面的实例可以说明指针算术运算的作用。
提示:指针的加减法运算是基于指针所代表的存储单元为单位,而不是以字节为单位。
【范例8-6】指针的算术运算,实例代码如下所示。
实例代码8-6
- 01 #include <stdio.h>
- 02 int main()
- 03 {
- 04 int i; /*定义一个循环变量i。*/
- 05 int *p; /*定义一个指向整型变量的指针。*/
- 06 int a[10]; /*定义一个整型的数组。*/
- 07 for(i=0;i<10;i++) /*变量i从0~9执行循环。*/
- 08 {
- 09 a[i]= i +10; /*对数组进行赋值。*/
- 10 }
- 11 p=a; /*将数组a的指针赋值给p。*/
- 12 for(i=0;i<10;i++) /*进行10次循环。*/
- 13 {
- 14 printf("%d ",*p); /*输出指针p指向的值。*/
- 15 p++; /*指针p向后移动一个单元。*/
- 16 }
- 17 printf("\n",*p); /*输出一个换行。*/
- 18 pp=p-4; /*指针向前移动4个单元。*/
- 19 printf("%d ",*p); /*输出指针p指向的值。*/
- 20 pp=p-3; /*指针向前移动3个单元。*/
- 21 printf("%d ",*p); /*输出指针p指向的值。*/
- 22 pp=p+5; /*指针向后移动5个单元。*/
- 23 printf("%d \n",*p); /*输出指针p指向的值。*/
- 24 return 0;
- 25 }
【执行结果】输入下面的命令,编译这个程序。- gcc 8.6.c
输入下面的命令,运行这个程序。- ./a.out
程序的运行结果如下所示。- 10 11 12 13 14 15 16 17 18 19
- 16 13 18
【代码解析】代码第18行、第20行和第22行通过指针的算术运算来访问对应的数组元素。这种访问数组元素的方式与使用下标的方式效果相同。