2012-07-24 70 views
0

可能重複:
Why sizeof(param_array) is the size of pointer?的數組的sizeof減少,爲什麼

void print(char arr[]){ 
    int i; 
    printf("%d" , sizeof(arr)); /*print 4**/ 

} 

int main() 
{ 

    char arr[]={0,1,2,3,4}; 
    printf("%d" , sizeof(arr)); /*print 5**/ 
    print(arr); 
} 

當我的陣列發送到功能似乎在1的大小減小什麼發生?

+0

不久前提到:http://stackoverflow.com/questions/11622146/why-sizeofparam-array-is-the-size-of-pointer – chris 2012-07-24 17:21:31

+0

當數組傳遞給函數時,函數參數表示指向數組的第一個元素的指針。因此,當您嘗試在函數中查找大小時,就會得到指針的大小。 – krammer 2012-07-24 17:27:20

回答

3

因爲你真的沒有在函數中的數組;它已經降級爲一個指針並且大小是未知的。您要求的是sizeof a char*,在您的平臺上,它是4個字節。

相關問題