2015-10-19 46 views
0

我對如何將數組傳遞給函數感到困惑。在此代碼..將數組傳遞給C++中的函數並查找大小

#include <iostream> 

using namespace std; 

void func(int arr[]) 
{ 
    int n = sizeof(arr)/sizeof(arr[0]); 
    cout << n << endl; 
} 

int main() 
{ 
    int arr[] = {3,6,2,4,7,9,5,1}; 
    int n = sizeof(arr)/sizeof(arr[0]); 
    cout << n << endl; 
    func(arr); 
    return 0; 
} 

我得到的輸出是

有人能請解釋一下爲什麼會這樣?

+0

_「我很疑惑數組是如何傳遞給函數的。」_我並不感到驚訝! **不是。** –

回答

0

當一個數組傳遞給一個函數時,它會自動衰減爲一個指針。儘管您將int arr[]作爲參數編寫,但arr是一個指針,sizeof(arr)產生sizeof(T*)。提領int*產生int。在您的機器上int*int碰巧有相同的大小,所以sizeof(int*)/sizeof(int) == 1