不带下标的数组名代表一批变量,它存放的是数组的首地址(数组首元素的地址)。
直接用参数名做参数时,传送的时地址值,地址传递后实参数组、形参数组地址相同,共享相同的内存单元,可以说就是同一个数组,只是生存期和作用域不同而已。
注意:
形参数组并不会重新申请分配空间,而是与实参数组公用存储单元。
实参数组和形参数组类型要保持一致。
“值传递”:对形参修改不影响实参。
“地址传递”:修改形参就相当于修改实参。
#include<stdio.h> //数组元素做实参
int main(){
void print(int n);
int score[5];
int i;
for(i=0; i<5; i++)
{
printf("请依次输入第%d位同学的成绩:",i+1);
scanf("%d",&score[i]);
}
for(i=0;i<5;i++)
{
print(score[i]); //传递的是数组元素的值
}
return 0;
}
void print(int n)
{
printf("%d ",n);
}
#include<stdio.h> //数组名做实参、形参
int main()
{
float average(float x[]);
float score[5],ave;
int i;
for(i=0; i<5; i++)
{
printf("请依次输入第%d位同学的成绩:",i+1);
scanf("%f",&score[i]);
}
ave=average(score); //传递的是数组的首地址
printf("该%d位同学的平均成绩为:%.2f\n",i,ave);
}
float average(float x[])
{
float num=0.,ave;
int i;
for(i=0; i<5; i++)
{
num+=x[i];
}
ave=num/5;
return ave;
}