Предположим, я объявляю указатель на int
int *a= new int();
int *b= new int();
И я хочу, чтобы он сохранил свой адрес в каком-то массиве, но массив не будет таким указателем
int *arr[] = {a, b};
А возможно ли это?
потому что имя массива содержит адрес, и если мы объявим указатель на массив, они снова будут содержать тот же адрес,
так как мы можем хранить указатели в обычном массиве, а не указатель множество . как
int arr[] = {a,b} ; //not like int arr[] = {*a, *b};
и если нет, то почему?
"но массив не будет таким указателем" - почему бы и нет? Если вы попытались, и это не сработало, в чем было сообщение об ошибке?
В этом случае используйте std::array<int*,2>.
ошибки нет, Скотт Хантер, но я думаю, возможно это или нет. Я просто спрашиваю об этом.
Возможно, вам потребуется пояснить, что вы имеете в виду, когда говорите, что некоторые массивы являются «обычными массивами».





int *arr[] = {a, b};
не объявляет указатель, он объявляет массив указателей, размер которого определяется список-инициализации в фигурных скобках. Это тот синтаксис, который вам нужен, если вам нужен необработанный массив необработанных указателей.
Тем не менее, ручное управление памятью чревато осложнениями, и предпочтительнее использовать std::unique_ptr<int>[], std::array<std::unique_ptr<int>, some_compile_time_size> или std::vector<std::unique_ptr<int>>, поскольку они справятся с освобождением памяти, когда они выходят за рамки.
Я понял, о чем вы спрашиваете? я думаю, ты так говоришь!
1. В чем разница между массивом указателей и обычным массивом.
2. почему мы не можем назначить указатель на обычный массив примерно так:
int *a= new int();
int *b= new int();
int SomeArray[] = {a,b} // and you trying to saying that why this is compiler error. while putting the a,b pointer into a normal array.
int *SomeArray[] = {a,b} // it is valid. because it is pointer array to in Int and contain pointers to in Int variables.
Думаю, вы пытаетесь спросить об этом.
Вывод: Если вы объявляете обычный или обычный массив определенного типа, то вам необходимо соответствующее значение, которое. и если массив является массивом указателя, тогда вы должны поместить в него указатель.
Например:
//For pointer array.
int *a= new int(); // this is pointer to an Int a.
int *b= new int(); // this is pointer to an Int b.
int *pointerArray[] = {a,b};
//For regular array.
int x= 10; // this is normal int.
int y= 20; // this is normal int.
int normalArray[] = {x,y};
Я надеюсь, о чем вы пытаетесь спросить. Вы все поняли?