为什么两种情况下阵列的大小不一样?

时间:2016-01-10 07:59:51

标签: c++

#include<iostream>
using namespace std;
void f(int arr[])
{
    int a=sizeof(arr);
    cout<<a;
}
int main()
{
    int n;
    cin>>n;
    int arr[n];
    int a=sizeof(arr);
    cout<<a<<"\n";
    f(arr); 
}

输出:

24
8

为什么即使我打印相同阵列的大小,我的输出在两种情况下都不相同?

1 个答案:

答案 0 :(得分:0)

在第一次调用中,它显示了数组的大小。 但在第二种情况下,它显示了传递指针的大小。

当数组通过函数传递时,它们会衰减为指针。通过后,:

sizeof(array)

显示指针的大小。