C++ 将数组传递给C++;和查找大小

C++ 将数组传递给C++;和查找大小,c++,arrays,C++,Arrays,我对数组如何传递给函数感到困惑。在此代码中 #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

我对数组如何传递给函数感到困惑。在此代码中

#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;
}
#包括
使用名称空间std;
无效函数(整数arr[]
{
int n=sizeof(arr)/sizeof(arr[0]);

cout当数组被传递给函数时,它会自动衰减为指针。尽管您将
int-arr[]
作为参数写入,但
arr
是一个指针,
sizeof(arr)
产生
sizeof(T*)
。取消引用
int*
会产生
int
。在您的机器上
int*
int
恰好大小相同,因此
sizeof(int*)/sizeof(int)==1
“我对数组如何传递给函数感到困惑。”我一点也不奇怪!这并不奇怪。