分类: C/C++
2008-06-01 16:31:17
C语言 指针学习笔记 4
数组名作函数参数
1.(用实参指针变量改写)将n个整数按相反顺序存放。
程序如下:
Author:yuexingtian
Date:Sunday, June 01, 2008
/*(用实参指针变量改写)将n个整数按相反顺序存放*/ void inv(int *x,int n) { int *p,m,temp,*i,*j; m=(n-1)/2; i=x;j=x+n-1;p=x+m; for(;i<=p;i++,j--) {temp=*i;*i=*j;*j=temp;} return; } main() { int i,arr[10]={1,2,3,4,5,6,7,8,9,10},*p; p=arr; printf("The original array:\n"); for(i=0;i<10;i++,p++) printf("%d ",*p); printf("\n"); p=arr; inv(p,10); printf("The array has benn inverted:\n"); for(p=arr;p printf("%d ",*p); printf("\n"); getch(); } |
注意:
main函数中的指针变量p是有确定值的。即如果用指针变作实参,必须现使指针变量有确定值,指向一个已定义的数组。
2.(选择法)对10个整数从大到小排序。
程序如下:
/*用选择法对十个整数从大到小排序*/ main() { int *p,i,a[10]= {1,10,7,6,4,3,2,9,8,5}; printf("The original array:\n"); for(i=0;i<10;i++) printf("%d,",a[i]); printf("\n"); p=a; sort(p,10); printf("the max to min numbers is:\n");
for(p=a,i=0;i<10;i++) {printf("%d ",*p);p++;} printf("\n");
getch(); } sort(int x[],int n) { int i,j,k,t; for(i=0;i { k=i; for(j=i+1;j if(x[j]>x[k])k=j; if(k!=i) {t=x[i];x[i]=x[k];x[k]=t;} } } |
测试结果:
说明:
函数sort用数组名作为形参,也可改为用指针变量,这时函数的首部可以改为:sort(int *x,int n) 其他可一律不改。