清华大学出版社 TSINGHUA UNIVERSITY PRESS 103指向数组的指针变量 2.通过指针变量引用数组 2)引用一个数组元素的方法 (3)指针移动法:即采用*p++形式,用间接访问的方法来访 问数组元素,其中a是数组名,p是指向数组各元素的指针变量。 例10_10】输出数组中的全部元素。(用指针变量指向元素, 指针变量移动) include<stdio,h> void maino i int a[5], i, *p=a for(i=0; i<5,) {*p=i; printf("a[%d]=%d\n "i++* pt+) 16 返回本章首页
16 返回本章首页 10.3 指向数组的指针变量 2. 通过指针变量引用数组 2)引用一个数组元素的方法 (3)指针移动法:即采用*p++形式,用间接访问的方法来访 问数组元素,其中a是数组名,p是指向数组各元素的指针变量。 【例10_10】输出数组中的全部元素。(用指针变量指向元素, 指针变量移动) #include<stdio.h> void main() { int a[5],i,*p=a; for(i=0;i<5;) { *p=i; printf("a[%d]=%d\n",i++,*p++); } }
清华大学出版社 TSINGHUA UNIVERSITY PRESS 103指向数组的指针变量 2.通过指针变量引用数组 3)两个指针变量之间的相减运算 只有指向同一数组的两个指针变量之间才能进行运算,否则 运算毫无意义 两指针变量相减所得之差是两个指针所指数组元素之间相差 元素个数。实际上是两个指针值(地址)相减之差再除以该数 组元素的长度(学节数) 两个指针变量不能进行加法运算,毫无实际意义。 4)两指针变量的关系运算 指向同一数组的两指针变量可以进行关系运算,可表示它们 所指向的数组元素位置关系。例如: f1==pf2表示pf和pf2指向同一数组元素; pf1>pf2表示p1处于高地址位置; pf1<p2表示p2处于低地址位置。 返回本章首页
17 返回本章首页 10.3 指向数组的指针变量 2. 通过指针变量引用数组 3)两个指针变量之间的相减运算 只有指向同一数组的两个指针变量之间才能进行运算,否则 运算毫无意义。 两指针变量相减所得之差是两个指针所指数组元素之间相差 的元素个数。实际上是两个指针值(地址)相减之差再除以该数 组元素的长度(字节数)。 两个指针变量不能进行加法运算,毫无实际意义。 4)两指针变量的关系运算 指向同一数组的两指针变量可以进行关系运算,可表示它们 所指向的数组元素位置关系。例如: pf1==pf2表示pf1和pf2指向同一数组元素; pf1>pf2表示pf1处于高地址位置; pf1<pf2表示pf2处于低地址位置
清华大学出版社 TSINGHUA UNIVERSITY PRESS 103指向数组的指针变量 2通过指针变量引用数组 5)指向数组的指针变量使用注意事项 (1)指针变量可以实现本身的值的改变,而数组名是数组的 首地址,是常量。如p+是[]=0 (2)要注意指针变量的[1]125952 【例1011】找出错误 [2]=1245128 a【3]=4199833 include<stdio. h> a[4]=1 void maino Press any key to continue i int *p, i, a[5] p=a, for(i=0;i<5;i++)p++=i; for(i=0; i <5; i++printf("a[%d]=%din",i,*p++) 18 返回本章首页
18 返回本章首页 10.3 指向数组的指针变量 2. 通过指针变量引用数组 5)指向数组的指针变量使用注意事项 (1)指针变量可以实现本身的值的改变,而数组名是数组的 首地址,是常量。如p++是合法的;而a++是错误的。 (2)要注意指针变量的当前值。 【例10_11】找出错误。 #include<stdio.h> void main() { int *p,i,a[5]; p=a; for(i=0;i<5;i++)*p++=i; for(i=0;i<5;i++)printf("a[%d]=%d\n",i,*p++); }
清华大学出版社 TSINGHUA UNIVERSITY PRESS 103指向数组的指针变量 2.通过指针变量引用数组 5)指向数组的指针变量使用注意事项 【例1012】改正。 include<stdio,h> void maino int*p,i, a[5] a, for(i=0;i<5;i++) p++ a, for(i=0;i<5;i++) printf("ar%d]=%dIn", i, *p++) 19 返回本章首页
19 返回本章首页 10.3 指向数组的指针变量 2. 通过指针变量引用数组 5)指向数组的指针变量使用注意事项 【例10_12】改正。 #include<stdio.h> void main() { int *p,i,a[5]; p=a; for(i=0;i<5;i++) *p++=i; p=a; for(i=0;i<5;i++) printf("a[%d]=%d\n",i,*p++); }
清华大学出版社 TSINGHUA UNIVERSITY PRESS 103指向数组的指针变量 2.通过指针变量引用数组 5)指向数组的指针变量使用注意事项 (3)*p++,由于++和*优先级相同,结合方向自右而左,等 价于(p++)。 价(4)p+与(++p作用不同。若p的初值为a,则(p++等 0],*(++p)等价a[们。 (5)(忄p+表示p所指向的元素值加1。 (6)如果p当前指向a数组中的第i个元素,则 (p-)相当于a[-]; (+p)相当于a[+; *(-p)相当于a[-] 20 返回本章首页
20 返回本章首页 10.3 指向数组的指针变量 2. 通过指针变量引用数组 5)指向数组的指针变量使用注意事项 (3)*p++,由于++和*优先级相同,结合方向自右而左,等 价于*(p++)。 (4)*(p++)与*(++p)作用不同。若p的初值为a,则*(p++)等 价a[0], *(++p)等价a[1]。 (5)(*p)++表示p所指向的元素值加1。 (6)如果p当前指向a数组中的第i个元素,则 *(p--)相当于a[i--]; *(++p)相当于a[++i]; *(--p)相当于a[--i]