將函式中陣列用指標代替的問題
阿新 • • 發佈:2021-02-08
將函式中函式宣告,函式解釋,函式使用部分用指標表示,即當形參,和實參都是陣列名的時候,怎麼用指標表示
如,用函式來求兩組學生的成績平均數
#include<stdio.h>
int main()
{
float aver(float a[],int n);
float a[5],b[10];
int i;
printf("請輸入第一組學生的成績:\n");
for(i=0;i<5;i++)
{
scanf("%f",&a[i]);
}
printf("請輸入第二組學生的成績: \n" );
for(i=0;i<10;i++)
{
scanf("%f",&b[i]);
}
printf("第一組的平均分為=%.2f\n",aver(a,5));
printf("第二組的平均分為=%.2f\n",aver(b,10));
return 0;
}
float aver(float a[],int n)
{
float sum=0,pingjunshu;
int i;
for(i=0;i<n;i++)
sum=sum+a[i];
pingjunshu=sum/n;
return (pingjunshu);
}
然後,此時將形參,實參為陣列名的用指標變量表示
#include<stdio.h>
int main()
{
float aver(float *p,int n);//函式宣告部分。
float a[5],b[10],*q,*r;
q=&a[0];//函式使用前關聯變數。
r=&b[0];
int i;
printf("請輸入第一組學生的成績:\n");
for(i=0;i<5;i++)
{
scanf("%f",&a[i]);
}
printf("請輸入第二組學生的成績: \n" );
for(i=0;i<10;i++)
{
scanf("%f",&b[i]);
}
printf("第一組的平均分為=%.2f\n",aver(q,5));//函式使用部分,陣列名直接用指標名錶示,如q,r等,前提是需要在用到的時候關聯變數。
printf("第二組的平均分為=%.2f\n",aver(r,10));
return 0;
}
float aver(float *p,int n)//函式宣告部分a[],用*p表示
{
float sum=0,pingjunshu;
int i;
for(i=0;i<n;i++)
sum=sum+*(p+i);//函式解釋部分a[i]用*(p+i)表示
pingjunshu=sum/n;
return(pingjunshu);
}