开发者社区 问答 正文

为什么不能在自定义函数里用sizeof()计算数组元素个数

include <stdio.h>
int sumUp(int arr[])
{

int sum = 0 ;
int a = sizeof(arr)/sizeof(arr[0]);
for(int i=0;i<a;i++)
{
   sum = arr[i];
}
printf("%d\n",a);//为什么a会为1?
printf("%d\n",sum);
return sum;
}

int highestScore(int arr[])
{

int a = sizeof(arr)/sizeof(arr[0]);
int temp = arr[0];
for(int i=0;i<a;i++)
{
    if(arr[i+1]> temp)
    {
        temp = arr[i+1];
    }
}

return temp;
}

int lowestScore(int arr[])
{

int temp = arr[0];
int a = sizeof(arr)/sizeof(arr[0]);
for(int i=0;i<a;i++)
{
    if(arr[i+1]<temp)
    {
        temp = arr[i+1];
    }
}   
return temp;
}

int averageScore(int arr[])
{

int a = sizeof(arr)/sizeof(arr[0]);
return sumUp(arr)/a;
}

/*int fromHighest2Lowest(int arr[a])
{

for(int i=0;i<a;i++)
{
    int temp;
}
}
*/
int main()
{

int score[]={61,98,75,63,82,79,81,51,69,84};
printf("%d\n",sizeof(score)/sizeof(score[0])); //这里输出的是10,为什么sumUp输出的a为1?
printf("考试的总分是:%d\n",sumUp(score));
/* printf("考试的平均分是:%d\n",averageScore(score));

printf("考试的最高分是:%d\n",highestScore(score));
printf("考试的最低分是:%d\n",lowestScore(score));
*/

getchar();    
return 0;
}

展开
收起
a123456678 2016-06-08 23:00:22 2572 分享 版权
1 条回答
写回答
取消 提交回答
  • 码农|Coder| Pythonista

    int sumUp(int arry[])的等价写法是int sum(int *arry)这样看应该好理解一些

    另外sizeof在c语言中可不是函数,而是在编译期求值的

    2019-07-17 19:32:52
    赞同 展开评论
问答地址: