为什么在调用参数化数组与使用指针和new调用数组之间存在大小差异?

时间:2018-11-30 14:34:18

标签: c++ arrays pointers integer sizeof

实际上,我已经看到,当我尝试定义数组时,最好在定义索引大小之后分配大小。因此,以这种方式定义大小...

#include<bits/stdc++.h>
using namespace std;
main()
{
    int *array,size;
    cout<<"The size of the array pointer: "<<sizeof(array)<<endl;
    cout<<"Enter the size of your array: ";
    cin>>size;
    array=new int[size];
    cout<<"The size of the array pointer: "<<sizeof(array)<<endl;
//  During the compilation the above line of code is ignored & won't shown in the Console.
    cout<<"Enter elements:"<<endl;
    for(int i=0;i<size;i++)
    {
        cin>>array[i];
    }
    cout<<"Your array: ";
    for(int i=0;i<size;i++)
    {
        cout<<array[i]<<" ";
    }
    cout<<endl<<"The size of the array pointer: "<<sizeof(array)<<endl;
}

但是,从一开始数组的大小就显示8个字节,而每个整数占用4个字节的内存。存储任何大小的数组时我都没有问题。它与参数化数组相同。但是,我的问题是为什么只占用8个字节的内存?

1 个答案:

答案 0 :(得分:0)

sizeof(array)是指针的大小,而不是int或您的数组。

通常,请改用std::vector<int>

不要使用#include<bits/stdc++.h>