2015-10-19 100 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