когда мы создаем двумерный динамический массив в 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