Почему существует разница в размере между вызовом параметризованного массива и вызовом массива с использованием указателя и new? - PullRequest
0 голосов
/ 30 ноября 2018

На самом деле я видел, что когда я пытаюсь определить массив, лучше определить размер после определения размера индекса.Итак, чтобы определить размер таким образом, я написал это ...

#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 голосов
/ 30 ноября 2018

sizeof(array) - это размер указателя, а не int или вашего массива.

В общем, вместо этого используйте std::vector<int>.

И не используйте #include<bits/stdc++.h>.

...