1. 可以用 数组元素 作为函数的参数。
2. 可以用 数组名 做函数参数(包括实参和形参)。
!应当注意的是:
(1)用数组元素作为实参时,向形参变量传递的是数组所对应数组元素的值
(2)而用数组名做函数实参时,向形参(数组名或指针变量)传递的是数组首元素的地址。
#include<stdio.h>
int main(){
//声明函数和变量
float average(float array[10]);
float score[10],aver;
int i;
//填充数组元素
printf("please enter 10 scores:");
for(i=0;i<10;i++)
scanf("%f",&score[i]);
printf("\n");
aver = average(score); //注意这里调用函数时,向形参传递的是数组首元素的地址
printf("average score is %5.2f\n ",aver);
return 0;
}
float average(float array[10])
//相当于初始化 float array[10] = score; 将score数组的首地址交给有10个元素的array数组
{
int i;
float aver,sum = 0;
for(i=0;i<10;i++)
sum = sum + array[i];
aver = sum / 10;
return(aver);
}
数组元素对调函数
一、参数是数组
#include<stdio.h>
int main(){
void change(int x[],int n);//n表示数组元素个数
int i,a[10] = {3,7,9,11,0,6,7,5,4,2};
printf("the original array:\n");
for(i=0;i<10;i++)
printf("%d\t",a[i]);
printf("\n");
change(a,10);
printf("the array has been inverted:\n");
for(i=0;i<10;i++)
printf("%d\t",a[i]);
return 0;
}
void change(int x[],int n)
//int x[] = a;
{
int temp,i,j,m=(n-1)/2;
for(i=0;i<=m;i++){
j = n - 1 - i;
temp = x[i];
x[i] = x[j];
x[j] = temp;
}
}
二、参数是指针
#include<stdio.h>
int main(){
void change(int *x,int n);
int i,a[10] = {3,7,9,11,0,6,7,5,4,2};
printf("the original array:\n");
for(i=0;i<10;i++)
printf("%d\t",a[i]);
printf("\n");
change(a,10);
printf("the array has been inverted:\n");
for(i=0;i<10;i++)
printf("%d\t",a[i]);
return 0;
}
void change(int *x,int n){
int *p,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;
}
}
汇总比较
int main(){
int a[10],*p=a;
.
f(p,10);
.
}
void f(int *x,int n){
.
}
int main(){
int a[10],*p=a;
.
f(p,10);
}
void f(int x[],int n){
.
}