我已经为家庭作业问题制作了这段代码,但是我收到了警告,我不明白为什么。当我打开程序时,它不起作用。
这是代码:
#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]);
有什么问题?
谢谢
答案 0 :(得分:1)
当您将数组传递给C中的函数时,该数组参数会衰减为指针,因此在您传递给它的函数中调用sizeof
会返回指针的大小本身,而不是您传递的数组的字节大小。