清华大学出版社 TSINGHUA UNIVERSITY PRESS 103指向数组的指针变量 1.指针数组的指针变量的定义与赋值 1)指向数组的指针变量的定义形式 类型声明符*指针变量名; 其中类型声明符表示所指数组的类型。应当注意,因为数组 为int型,所以指针变量也应为指向int型的指针变量 2)指向数组的指针变量的赋值 (1)将数组首元素的地址赋给指针变量 (2)将数组名赋给指针变量 (3)在定义指针变量的同时进行初始化 int*p=&a[0]; Ei: int*p=a; a、&a[0]均指向同一单元,它们是数组a的首地址,也是0 号元素a的首地址。应该声明的是p是指针变量,而a和&a都 是地址常量,在编程时应予以注意。 返回本章首页
11 返回本章首页 10.3 指向数组的指针变量 1. 指针数组的指针变量的定义与赋值 1)指向数组的指针变量的定义形式 类型声明符 *指针变量名; 其中类型声明符表示所指数组的类型。应当注意,因为数组 为int型,所以指针变量也应为指向int型的指针变量。 2)指向数组的指针变量的赋值 (1)将数组首元素的地址赋给指针变量 (2)将数组名赋给指针变量 (3)在定义指针变量的同时进行初始化 int *p=&a[0];或:int *p=a; p、a、&a[0]均指向同一单元,它们是数组a的首地址,也是0 号元素a[0]的首地址。应该声明的是p是指针变量,而a和&a[0]都 是地址常量,在编程时应予以注意
清华大学出版社 TSINGHUA UNIVERSITY PRESS 103指向数组的指针变量 2通过指针变量引用数组 1)指向数组的指针变量加减一个整数n的含义 设p是指向数组a的指针变量,则p+n、p-n、p++、+tp、p-、 -p运算都是合法的。指针变量加或减一个整数n的意义是把指针 指向的当前位置(指向某数组元素)向前或向后移动n个位置。 如果p的初值为&a[o],则: (1)p+和a+就是a的地址,或者说它们指向a数组的第个 元素。 (2)*(p+i)或ta+)就是p+减或a+所指向的数组元素,即a[j。 (3)指向数组的指针变量也可以带下标,p[与*p+i)等价。 2)引用一个数组元素的方法 (1)下标法:即用a[形式访问数组元素。 返回本章首页
12 返回本章首页 10.3 指向数组的指针变量 2. 通过指针变量引用数组 1)指向数组的指针变量加减一个整数n的含义 设p是指向数组a的指针变量,则p+n、p-n、p++、++p、p--、 --p运算都是合法的。指针变量加或减一个整数n的意义是把指针 指向的当前位置(指向某数组元素)向前或向后移动n个位置。 如果p的初值为&a[0],则: (1)p+i和a+i就是a[i]的地址,或者说它们指向a数组的第i个 元素。 (2)*(p+i)或*(a+i)就是p+i或a+i所指向的数组元素,即a[i]。 (3)指向数组的指针变量也可以带下标,p[i]与*(p+i)等价。 2)引用一个数组元素的方法 (1)下标法:即用a[i]形式访问数组元素
清华大学出版社 TSINGHUA UNIVERSITY PRESS 103指向数组的指针变量 2.通过指针变量引用数组 2)引用一个数组元素的方法 (1)下标法:即用a[形式访问数组元素。 【例107】输出数组中的全部元素。(下标法) include<stdio. h> void maino []= 1]=1 i int a[5, i [2]=2 for(i=0;<5;+) a[3]=3 a【4]=4 [ Press any key to continue for(i=0;<5;+) printf( a[%d%dn",i, a[) 13 返回本章首页
13 返回本章首页 10.3 指向数组的指针变量 2. 通过指针变量引用数组 2)引用一个数组元素的方法 (1)下标法:即用a[i]形式访问数组元素。 【例10_7】输出数组中的全部元素。(下标法) #include<stdio.h> void main() { int a[5],i; for(i=0;i<5;i++) a[i]=i; for(i=0;i<5;i++) printf("a[%d]=%d\n",i,a[i]); }
清华大学出版社 TSINGHUA UNIVERSITY PRESS 103指向数组的指针变量 2.通过指针变量引用数组 2)引用一个数组元素的方法 (2)指针固定法:即采用a+或*(p+形式,用间接访问的 方法来访问数组元素,其中是数组名,p是指向数组首元素的指 针变量。 【例108】输出数组中的全部元素。(通过数组名计算元素 的地址,找出元素的值) include<stdio h> void maino i int a[5], i for(i=0;i<5;i++)(a+=i; for(i=0;i<5;i++) printf("ar%d=%dIn",i, *(a+i)); 返回本章首页
14 返回本章首页 10.3 指向数组的指针变量 2. 通过指针变量引用数组 2)引用一个数组元素的方法 (2)指针固定法:即采用*(a+i)或*(p+i)形式,用间接访问的 方法来访问数组元素,其中a是数组名,p是指向数组首元素的指 针变量。 【例10_8】输出数组中的全部元素。(通过数组名计算元素 的地址,找出元素的值) #include<stdio.h> void main() { int a[5],i; for(i=0;i<5;i++)*(a+i)=i; for(i=0;i<5;i++) printf("a[%d]=%d\n",i,*(a+i)); }
清华大学出版社 TSINGHUA UNIVERSITY PRESS 103指向数组的指针变量 2.通过指针变量引用数组 2)引用一个数组元素的方法 (2)指针固定法:即采用a+或*(p+形式,用间接访问的 方法来访问数组元素,其中a是数组名,p是指向数组首元素的指 针变量。 【例10_9】输出数组中的全部元素。(用指针变量指向元素, 指针变量不动) include<stdio h> void maino i int a[5], i, *p: p-a, for(i=0;<5;i++)*(p+i)=i; for(i=0; i<5; i++)printf(a[%d]=%d\n",i,*(p+in) 15 返回本章首页
15 返回本章首页 10.3 指向数组的指针变量 2. 通过指针变量引用数组 2)引用一个数组元素的方法 (2)指针固定法:即采用*(a+i)或*(p+i)形式,用间接访问的 方法来访问数组元素,其中a是数组名,p是指向数组首元素的指 针变量。 【例10_9】输出数组中的全部元素。(用指针变量指向元素, 指针变量不动) #include<stdio.h> void main() { int a[5],i,*p; p=a; for(i=0;i<5;i++) *(p+i)=i; for(i=0;i<5;i++) printf("a[%d]=%d\n",i,*(p+i)); }