Рассмотрим следующий случай:
int **my_array = new int*[10];
my_array
указатель на что указывает?Мы назначаем my_array
адрес массива. Массив содержит указатели, которые могут указывать на другие массивы, но пока нет.
Да, мы можем сделать это:
int **my_array = new int*[10];
for(int i=0; i<10; ++i)
my_array[i] = new int[13];
my_array[2][11] = 500;
Что мы назначаем
my_array
Вот?
Вы можете назначить int*
к элементам my_array
, Например.
my_array[0] = new int[20];
или же
int i;
my_array[0] = &i;
my_array
указатель на что указывает?
Это указывает на массив из 10 int*
объекты.
Есть ли способ перебрать
my_array
(указатель) и установить двумерный массив целых чисел (а не int *)?
Не уверен, что вы ожидаете увидеть здесь. Элемент my_array
может быть только int*
,
Если ты хочешь my_array
чтобы быть указателем на двумерный массив, вы можете использовать:
int (*my_array)[20] = new int[10][20];
Теперь вы можете использовать my_array[0][0]
через my_array[9][19]
,
PS Если это ваша попытка понять указатели и массивы, это все хорошо. Если вы пытаетесь развернуть этот код в работающей программе, больше не используйте сырые массивы. использование std::vector
или же std::array
.
Для одномерного массива используйте:
// A 1D array with 10 elements.
std::vector<int> arr1(10);
Для 2D-массива используйте:
// A 2D array with 10x20 elements.
std::vector<std::vector<int>> arr2(10, std::vector<int>(20));