2015-11-06 74 views
-1

我做了這個代碼作業問題,但我得到警告,我不明白爲什麼。當我打開程序時,它不起作用。sizeof錯誤,同時試圖找到一個數組的大小

這是代碼:

#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上數組函數參數將代替返回 'INT []' 的 '詮釋*' 大小[ -wsizeof-array-argument] int i,result = 0,n = sizeof(array)/ sizeof(array [0]);

什麼問題?

謝謝

+0

@ user3121023在我的情況下不起作用。 – zeeks

回答

1

當傳遞數組到C中的函數,即數組參數衰減到一個指針和這樣的呼叫到該函數內sizeof將它傳遞到返回指針本身的尺寸,而不是你傳遞的數組的字節大小。

相關問題