2013-10-04 27 views
-2

我在C以下代碼:如何在C中調用一個函數的參數?

void getNumber(int numberArray[]) 
{ 
    printf("The size of the array is %u", sizeof(numberArray)); 
} 

void main() 
{ 
    int array[6] = {1,2,3,4,5,6}; 
    getNumber(array); 
} 

但爲什麼The size of the array is 4?以及如何獲得整個數組的大小?

+5

這不是千篇一律的重複嗎?你有沒有花費任何時間尋找類似的問題? –

回答

1

這是不可能的,除非你使用C99和數組是variable-length array

一般來說,數組非常像C中的指針,當傳遞給函數時更是如此。

0

getnumber(array)的情況下,您的數組名稱array衰減爲指針並且其大小爲4。在sizeof的情況下,數組名不衰減爲指針,因此給出整個數組的大小。

3
void getNumber(int numberArray[]) 

相當於

void getNumber(int* numberArray) 

所以sizeof(numberArray)只是測量int*大小。

如果你想知道數組的長度,你要麼需要通過它的長度作爲單獨的參數

void getNumber(int* numberArray, int len) 

getNumber(array, sizeof(array)/sizeof(array[0])); 

或安排陣列與一個已知的標記值

int array[] = {1,2,3,4,5,6,-1}; // assumes -1 is not a valid value 

int arrayLength(int* numberArray) 
{ 
    int len=0; 
    while (*numberArray++ != -1) { 
     len++; 
    } 
    return len; 
} 
結束
相關問題