2D динамический массив [дубликат]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 2D динамический массив [дубликат]

Сообщение Anonymous »

когда мы создаем двумерный динамический массив в C++, мы создаем двойной указатель, который по определению хранит адрес указателя, указывающего на первый элемент массива из n строк, но на самом деле он напрямую содержит адрес первого элемента, а не адрес указателя, указывающего на этот элемент, как и должно быть. Подобно int**ptr=new int*[], ptr содержит адрес первого элемента i-й строки, а не адрес указателя. Что мне не хватает? Где я ошибаюсь? Но при выполнении той же реализации в памяти стека, например, этот код:

Код: Выделить всё

 #include
using namespace std;

int main(){

int ptr0[4]={1,2,3,4};
int ptr1[4]={5,6,7,8};
int ptr2[4]={9,10,11,12};

int *ptr[3];
ptr[0]=ptr0;
ptr[1]=ptr1;
ptr[2]=ptr2;

int i,j;
cin>>i>>j;
cout<

return 0;
}
здесь мы создали массив указателей для хранения адреса в трех массивах, а не двойной указатель.
Я подумал, что можно использовать одиночный указатель массив для хранения адреса 1-го элемента i-й строки, но на самом деле мы используем массив двойных указателей, который содержит новый int[], который представляет собой не что иное, как адрес первого элемента i-го массива.

Подробнее здесь: https://stackoverflow.com/questions/785 ... amic-array
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»