首页 > 解决方案 > 数组作为函数参数错误查找数组的长度

问题描述

1.  int minimum(int arr[]){
2.
3.     int min,pos = 0;
4.     min =  arr[0];
5.     int i;
6.     for(i = 0;i<(sizeof(arr)/sizeof(*arr));i++){
7.         if(arr[i]<min){
8.             min = arr[i];
9.             pos = i;
10.        }
11.     }
12.     return arr[pos];
13.  }

在第 6 行中,for 循环条件中的语句无法计算数组的大小......

标签: c++c

解决方案


int minimum(int arr[])

编译时元素的数量是未知的,sizeof(arr)不能赋值正确的值,它会赋值,sizeof(int *)因为这是arr的类型

但在

void f()
{
   int arr[3];

   printf("%d\n", sizeof(arr)/sizeof(*arr));
}

arr的 sizeof在编译时是已知的


推荐阅读