读书人

数组名作函数参数怎样理解解决方法

发布时间: 2012-03-20 14:01:11 作者: rapoo

数组名作函数参数怎样理解
#include<stdio.h>
int main()
{
float average(float array[10]);
float score[10],aver;
int i;
printf("input 10 scores:\n");
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[])
{int i;
float aver,sum=array[0];
for(i=1;i<10;i++)
sum=sum+array[i];
aver=sum/10;
return (aver);
}

以上这个程序中float average(float array[])的(float array[])怎样理解,同(int x)有什么区别?形参数组名获得了实参数组的首元素的地址是什意思?

[解决办法]
(float array[])表示参数是一个float数组,数组名实质上是指针,指向数组的第一个元素
[解决办法]
(float array[])这是个是定义了了一个float类型的数组,是用一段连续的地址来储存他的元素,其元素个数大于等于1,而int x,是声明了一个地址用来储存一个整型;
其实传参和在函数中声明差不多
[解决办法]
数组当形参其实就是指针,上面的代码可转换为下面的,楼主更好的理解下、

C/C++ code
#include<stdio.h>int main(){    float score[10],aver;    int i;    printf("input 10 scores:\n");    for(i=0;i<10;i++)        scanf("%f",&score[i]);    printf("\n");    float *array=score;    float sum=array[0];    for(i=1;i<10;i++)        sum=sum+array[i];    aver=sum/10;    printf("average score is %5.2f\n",aver);    return 0;}
[解决办法]
也可以float average(float *array)
[解决办法]
相当于指向数组首地址的指针

读书人网 >C语言

热点推荐