2013-10-16 100 views
2

有人可以幫我解決這個問題嗎?獲取C中參數傳遞的數組元素的數量?

我認爲這是不可能的......除非我通過另一個參數的大小?我期待避免它。

我該怎麼做?

int size(int *array){ 
    return (sizeof(array)/sizeof(int)); 
}; 

int main(int argc, const char * argv[]) 
{ 
    int array[] = {1,2,3,4}; 

    printf("%d", size(array)); 

    return 0; 
} 

謝謝!

回答

7

你不能這樣做的功能。儘管你可以把它當作宏。

#define SIZEOF_ARRAY(array) (sizeof(array)/sizeof(*array)) 
+2

每個C程序員都寫這個宏。命名選擇很有趣,以前沒有看到過你的版本。請忽略投票給你的白癡,很好的回答。 –

+2

你應該補充說,這隻適用於數組*之前*它們衰減到指向第一個元素的指針;這對C新手來說並不明顯。 (儘管陣列衰減也不是。) – detly

+1

Minor:考慮'printf(「%u」,SIZEOF_ARRAY(array))''或'printf(「%zu」,SIZEOF_ARRAY(array))''。 – chux