★数组元素表示方法 [川变址运算符 a[i]台*(a+i) 地址 元素 地址 元素 a a[0] a[0] *8 p a[0] *p p[o] a+l a[l叮 a[1] *(a+1) p+1 a叮 *(p+1) p[1 a+2 a2] a[2]*(a+2) p+2 a2] *(p+2) p[2] a[3] a[3] a+9 a[9] a[9]*(a+9) p+9 a[9] *(p+9) p[叨 下标法 指针法 a[i]台p[]台*(p+i)台*(a+i)
数组元素表示方法 a[0] a[1] a[2] a[3] a[9] . a a+9 a+1 a+2 地址 元素 下标法 a[0] a[1] a[2] a[9] a[0] a[1] a[2] a[3] a[9] . p p+9 p+1 p+2 地址 元素 指针法 *p *(p+1) *(p+2) *(p+9) [] 变址运算符 a[i] *(a+i) a[i] p[i] *(p+i) *(a+i) *a *(a+1) *(a+2) *(a+9) p[0] p[1] p[2] p[9]
例注意指针的当前值 Ch9 6.c main() { int i,*p,a[7]; 5 p p-a; 8 1 for(i=0:i<7:i++) 7 2 scanf("%d",p++); 6 3 printf("\n"); p 2 4 p-a; p 7 5 for(i=O;i<7;i++,p++) printf("%d",p), 3 6 指针变量可以指到数组后的内存单元 D
main() { int i,*p,a[7]; p=a; for(i=0;i<7;i++) scanf("%d",p++); printf("\n"); for(i=0;i<7;i++,p++) printf("%d",*p); } 例 注意指针的当前值 p=a; p p 5 8 7 6 2 7 3 0 1 2 3 4 5 6 a p p p p p p 指针变量可以指到数组后的内存单元
★数组名作函数参数 必数组名作函数参数,是地址传递 数组名作函数参数,实参与形参的对应关系 实参 形参 数组名 数组名 数组名 指针变量 指针变量 数组名 指针变量 指针变量
数组名作函数参数 ❖数组名作函数参数,是地址传递 ❖数组名作函数参数,实参与形参的对应关系 实参 形参 数组名 指针变量 数组名 指针变量 数组名 数组名 指针变量 指针变量
例将数组a中的个整数按相反顺序存放 Ch9_7.c void inv(int x[],int n) int t,i,j,m=(n-1)/2; m=4 for(i=0;i<=m;i++) j=n-1-i; =x[;[=xj];xj]=t, 24576011973 36ii main() {inti,a[10]={3,7,9,11,0,6,7,5,4,2; inv(a,10); printf("The array has been reverted:n"); for(i=0;i<10;i++) 实参与形参均用数组 printf("%d,",alil); printf("\n");
例 将数组a中的n个整数按相反顺序存放 i j 3 7 9 11 0 6 7 5 4 2 0 1 2 3 4 5 6 7 8 9 i i i i j j j j 2 4 5 7 6 0 11 9 7 3 实参与形参均用数组 void inv(int x[], int n) { int t,i,j,m=(n-1)/2; for(i=0;i<=m;i++) { j=n-1-i; t=x[i]; x[i]=x[j]; x[j]=t; } } main() { int i,a[10]={3,7,9,11,0,6,7,5,4,2}; inv(a,10); printf("The array has been reverted:\n"); for(i=0;i<10;i++) printf("%d,",a[i]); printf("\n"); } m=4