scanf("%d",p);
p=number;
max_min_value(p,10);
printf("\nmax=%d,min=%d\n",max,min);
}
归纳起来,如果有一个实参数组,想在函数中改变此数组的元素的值,实参与形参的对应关
系有以下4种:
1) 形参和实参都是数组名。
main()
{int a[10];
……
f(a,10)
……
}
a和x指的是同一组数组。
2) 实用数组,形参用指针变量。
main()
{int a[10];
……
f(a,10)
……
}
3) 实参、型参都用指针变量。
4) 实参为指针变量,型参为数组名。
谭浩强 C 语言程序设计 2001 年 5 月 1 日
f(int x[],int n)
{
……
}
f(int *x,int n)
{
……
}
【例 10.20】用实参指针变量改写将 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]={3,7,9,11,0,6,7,5,4,2},*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");
}
注意:main 函数中的指针变量 p 是有确定值的。即如果用指针变作实参,必须现使指针变
量有确定值,指向一个已定义的数组。
【例 10.21】用选择法对 10 个整数排序。
main()
谭浩强 C 语言程序设计 2001 年 5 月 1 日
{int *p,i,a[10]={3,7,9,11,0,6,7,5,4,2};
printf("The original array:\n");
for(i=0;i<10;