不帶下標的數組名代表一批變量,它存放的是數組的首地址(數組首元素的地址)。
直接用參數名做參數時,傳送的時地址值,地址傳遞後實參數組、形參數組地址相同,共享相同的內存單元,可以說就是同一個數組,只是生存期和作用域不同而已。
注意:
形參數組並不會重新申請分配空間,而是與實參數組公用存儲單元。
實參數組和形參數組類型要保持一致。
“值傳遞”:對形參修改不影響實參。
“地址傳遞”:修改形參就相當於修改實參。
#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;
}