清华大学出版社 TSINGHUA UNIVERSITY PRESS void swap(int x, int y) void swap2(int *p) void swap 3(int *pl, int*p2) i int temp i int temp t int *temp temp=X temp=p temp-=pl; y p=*(p+1) pI=p2 y=temp (p+1)=temp 2=temp; void main () inta={3,5},b[]={3,5},c[]={3,5} swapl(a[o, a[lD; swap2(b); swap(&c[o], &cllD) printf( %d, %odn%d, %dn%d, %od,, a[ol, a[ll,blo,blll clo] cllD 数组元素作参数是将数组元素的值传递到形参对应的内存空间中, 数组名作参数是将数组名的值(即数组首地址)传递到形参对应的单元中
void swap1(int x, int y) void swap2(int *p) void swap3(int *p1,int *p2) { int temp; { int temp; { int *temp; temp=x; temp=*p; temp= p1; x=y; *p=*(p+1); p1 = p2; y=temp; *(p+1)=temp p2=temp; } } } void main() { int a[]={3,5}, b[ ]={3,5}, c[ ]={3,5}; swap1 (a[0], a[1]); swap2 (b); swap3 (&c[0],&c[1]); printf(“%d,%d\n%d,%d\n%d,%d\n” ,a[0],a[1],b[0],b[1],c[0],c[1]); } 数组元素作参数是将数组元素的值传递到形参对应的内存空间中, 数组名作参数是将数组名的值(即数组首地址)传递到形参对应的单元中
清华大学出版社 ISINGHUA UNIVERSITY PRESS §10.3数组与指针 10.3.1指向数组元素的指针 in ta[101 in t x p=&a[0] 或 p=a 等价于 13 int*p=&ao 15 或int*p=a 17 19
§10.3 数组与指针 int a[10]; *p; p = &a[0]; 或 p = a; 等价于 int *p=&a[0] 或int *p=a 10.3.1 指向数组元素的指针
10.3.2通过指针引用数组元素 (1)下标法,用下标/变址运算符[,如p或a (2)指针法,用指针运算符,如*p或*(a+i),与前等价 例10.5输出数组中的全部元素,注意与p区别 for(i=0:i<10:i++) printf ("%d",aLi]); for(i=0;i<10;i++) printf ("%d",*(ati)) or(p=a;p<(a+10);p++) printf("%d",*p);/*此处不可用a*/ for(i=0,p=a;i<10;i++) printf(s d”,p[);/p可与数组名同样使用*
10.3.2通过指针引用数组元素 (1)下标法,用下标/变址运算符[ ],如p[i]或a[i] (2) 指针法,用指针运算符,如*p或*(a+i),与前等价 例10.5 输出数组中的全部元素 ,注意a与p区别 for(i=0;i<10;i++) printf(″%d″,a[i]); for(i=0;i<10;i++) printf(″%d″ , *(a+i)); for(p=a;p<(a+10);p++) printf(″%d ″ , *p);/*此处不可用a*/ for( i=0,p=a;i<10;i++) printf(“%d”,p[i]);/*p可与数组名同样使用*/
例10.6用指针变量输出数组元素,注意找问题。 #include <stdio h> void main o i int p [10] p= a for(i=0;i<10;i++ scant("%d",p+十); printf("、n"); for (F=oLp=a: i <10 i++, p++ printf ("%d",*p);
例10.6 用指针变量输出数组元素,注意找问题。 #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); } ,p=a
大学出版社 10. 33用数组名或指向数组元素的指针作实参或形参 void main o f (int arr[, int n int array[10] Intp; p-arfray f(array f(p, int n) y f(int*arr, int n) void f (int arr[ int n)
10.3.3 用数组名或指向数组元素的指针作实参或形参 void main() { f(int arr[],int n); int array[10]; ┇ f(array,10); ┇ } void f(int arr[],int n) { ┇ } f (int *arr, int n) int *p; p=array f (p, int n)