数组作为函数参数错误,查找数组的长度

时间:2019-02-02 11:20:28

标签: c++ c

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循环条件的语句不能计数阵列的大小.......

1 个答案:

答案 0 :(得分:0)

int minimum(int arr[])

在编译时元素的数目未知,sizeof(arr)无法赋值正确的值,它将赋值sizeof(int *),因为这是 arr

的类型

但是在

void f()
{
   int arr[3];

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

arr 的大小在编译时是已知的