清华大学出版社 TSINGHUA UNIVERSITY PRESS 10.3.2通过指针引用数组元素 引用一个数组元素,可以用: (1)下标法,如a[i]形式; (2)指针法,如*(a+i)或*(p+i)。 其中a是数组名,p是指向数组元素的指针变量,其初 值p=a。 例10.5输出数组中的全部元素。 假设有一个a数组,整型,有10个元素。要输出 各元素的值有三种方法: C程序设计(第三版) http://ccf.tsinghua.edu.cn 26
C程序设计(第三版) http://ccf.tsinghua.edu.cn 26 10.3.2通过指针引用数组元素 引用一个数组元素,可以用: (1) 下标法,如a[i]形式; (2) 指针法,如*(a+i)或*(p+i)。 其中a是数组名,p是指向数组元素的指针变量,其初 值p=a。 例10.5 输出数组中的全部元素。 假设有一个a数组,整型,有10个元素。要输出 各元素的值有三种方法:
清华大学出版社 TSINGHUA UNIVERSITY PRESS ①1)下标法。 #include <stdio. h void main () {inta[10]; Int for(i=0;i<10;i++ scanf ("%d",&ai) printf("、n") for(i=0:i<10:i++) printf ("od",aLi] C程序设计(第三版) http://ccf.tsinghua.edu.cn 27
C程序设计(第三版) http://ccf.tsinghua.edu.cn 27 (1)下标法。 #include <stdio.h> void main() { int a[10]; int i; for(i=0;i<10;i++) scanf(″%d″,&a[i]); printf(″\n″); for(i=0;i<10;i++) printf(″%d″,a[i]); }
清华大学版社 ②2)通过数组名计算数组元素地址,找出元素的值。 #include <stdio.h> void main ( {inta[10]; Int 1 for(i=0;i<10;i++) scanf (%o d", printf("、n") for(i=0;i<10:i++) printf ("%d",*(at C程序设计(第三版) http://ccf.tsinghua.edu.cn 28
C程序设计(第三版) http://ccf.tsinghua.edu.cn 28 (2) 通过数组名计算数组元素地址,找出元素的值。 #include <stdio.h> void main() { int a[10]; int i; for(i=0;i<10;i++ ) scanf(″%d″,&a[i]); printf(″\n″); for(i=0;i<10;i++) printf(″%d″ , *(a+i)); }
清华大学出版社 TSINGHUA UNIVERSITY PRESS (3)用指针变量指向数组元素。 #include <stdio.h> void main () I int a[10J Int p, 1 for(i=0;i<10:i++) scanf ("%d",&a[il) printf (" n") for(p=a;p<(a+10);p++) printf ("%d",*p) f「c程序设计(第三版) http://ccf.tsinghua.edu.cn 29
C程序设计(第三版) http://ccf.tsinghua.edu.cn 29 (3) 用指针变量指向数组元素。 #include <stdio.h> void main() { int a[10]; int *p,i; for(i=0;i<10;i++) scanf(″%d″,&a[i]); printf(″\n″); for(p=a;p<(a+10);p++) printf(″%d ″ , *p); }
例10.6通过指针变量输出a数组的10个元素。 程序运行情况: 1234567890∠ 22153234003003625202116318259823728483 显然输出的数值并不是a数组中各元素的值 scanf ("%d", p++) printf ("\ n") for(i=0;i<10;i++ printf ("%d",*p); f「c程序设计(第三版) http://ccf.tsinghua.edu.cn 30
C程序设计(第三版) http://ccf.tsinghua.edu.cn 30 例10.6 通过指针变量输出a数组的10个元素。 #include <stdio.h> void main() { int *p,i,a[10]; p=a; for(i=0;i<10;i++ ) scanf(″%d″,p++); printf(″\n″); for(i=0;i<10;i++,p++ ) printf(″%d″ , *p); } 程序运行情况: 1 2 3 4 5 6 7 8 9 0↙ 22153 234 0 0 30036 25202 11631 8259 8237 28483 显然输出的数值并不是a数组中各元素的值