尝试查找数组大小时出现sizeof错误

时间:2015-11-06 00:12:53

标签: c arrays

我已经为家庭作业问题制作了这段代码,但是我收到了警告,我不明白为什么。当我打开程序时,它不起作用。

这是代码:

#include <stdio.h>
#include <math.h>

int binarytodec(int array[]) {

  int i, result=0, n = sizeof(array)/sizeof(array[0]);

  for( i=0; i<n; i++ ) {

    if(array[i]==1) {
      result +=pow(2,i);
    } else if(array[i]==0) {
      result +=0;
    }
    else break;
  }
    return result;
}

int main() {

  int b[] = {1,1,1,0,0,1,0,0,12};

  binarytodec(b);

  return 0;
}

警告是:

  

警告:sizeof on array function参数将返回大小         'int *'代替'int []'[-Wsizeof-array-argument] int i,result = 0,n = sizeof(array)/ sizeof(array [0]);

有什么问题?

谢谢

1 个答案:

答案 0 :(得分:1)

当您将数组传递给C中的函数时,该数组参数会衰减为指针,因此在您传递给它的函数中调用sizeof会返回指针的大小本身,而不是您传递的数组的字节大小。