在c++中传递一个数组给函数并查找大小

Passing an array to the function in C++ and finding size

本文关键字:函数 数组 查找 一个 c++      更新时间:2023-10-16

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

#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;
}
我得到的输出是 8

1

谁能解释一下为什么会这样?

当数组被传递给函数时,它会自动衰减为指针。虽然你写int arr[]作为一个参数,但arr是一个指针,sizeof(arr)产生sizeof(T*)。对int*解引用得到int。在您的机器上,int*int恰好具有相同的大小,因此sizeof(int*) / sizeof(int) == 1 .