Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
pcmax
14 / 14 / 2
Регистрация: 29.01.2018
Сообщений: 362
1

Двумерный динамический массив: как это работает?

16.08.2018, 18:26. Просмотров 154. Ответов 7
Метки нет (Все метки)

вобщем неправильно понимаю суть.
помогите разобраться.

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

ок. и так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
int main() {
int i;
for(i=0; i<10; ++i){
int ** array[i]  // создал массив в котором будут находится указатели на динамические массивы.  то есть массив из указателей на указатели.
int j;
j=j+1;
int *dinarray= new int [j]{j}; // cоздал , вернее зарезервировал память для динамического массива и заполнил его. 
 
array[i]=&dinarray; // помещаю адреса динамического одномерного массива в массив созданный для указателей  на эти адреса. то есть беру адрес у динамического массива и помещаю его в массив для адресов. 
}
 
return 0;
 
}
вобщем думаю что это бред. помогите понять где заблудился
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.08.2018, 18:26
Ответы с готовыми решениями:

Пом Динамический - двумерный массив, не работает=(
//---------------------------------------------------------------------------...

Как создать динамический двумерный массив
Динамический одномерный массив p можно сождать примерно так: int N, *p; cin...

Как заполнить двумерный динамический массив?
вот я создал двумерный динамический массив (правильно надеюсь): int row=2;...

Как заполнить двумерный динамический массив?
Кто может объяснить , как создать динамический двумерный массив и записать в...

Как объявить двумерный динамический массив
int *matrix = new int ; че ругается ? а как сделать если без...

7
JesD
9 / 7 / 2
Регистрация: 13.09.2017
Сообщений: 42
16.08.2018, 18:46 2
Двумерный динамический массив - это фактически одномерный динамический массив, элементами которого являются указатели на другие массивы:

C++
1
2
3
4
5
6
7
int **array;
 
array = new int*[10]; // array указывает на массив указателей (10 штук) на тип int
 
// Для каждого указателя выделяем память под новый массив (из 100 элементов в данном случае)
for(int i = 0; i < 10; i++)
    array[i] = new int[100];
Таким образом имеем 10 строк по 100 символов.
1
JesD
9 / 7 / 2
Регистрация: 13.09.2017
Сообщений: 42
16.08.2018, 18:54 3
При создании двумерного динамического массива сначала нужно выделить память для массива указателей на одномерные массивы (т.е указатель на указатель), а затем в цикле выделить память под эти самые одномерные массивы.
1
Миниатюры
Двумерный динамический массив: как это работает?  
pcmax
14 / 14 / 2
Регистрация: 29.01.2018
Сообщений: 362
16.08.2018, 19:01  [ТС] 4
Цитата Сообщение от JesD Посмотреть сообщение
При создании двумерного динамического массива сначала нужно выделить память для массива указателей на одномерные массивы (т.е указатель на указатель), а затем в цикле выделить память под эти самые одномерные массивы.

а я динамическую память только выделил для элементов , которые будут содержаться в **array, то есть для dinarray.
а сам array не имеет динамический.
правильно?
0
ОС
327 / 80 / 1
Регистрация: 21.07.2018
Сообщений: 112
Записей в блоге: 1
16.08.2018, 22:42 5
Компилятор запутается где-то на первой строчке внутри цикла.

В обычном коде редко встречается такое ручное управление памятью. Для одномерных динамических массивов есть std::vector. Для многомерных в стандарте пока неудобные классы. Можно найти где-нибудь в boost получше.
1
pcmax
14 / 14 / 2
Регистрация: 29.01.2018
Сообщений: 362
17.08.2018, 00:11  [ТС] 6
ok


это я учебных целях
так навыдумывал себе, что запутался и вот решил лучше спросить. Выше написали простое создание этого массива, как правильно..
0
politoto
130 / 123 / 5
Регистрация: 23.07.2018
Сообщений: 273
17.08.2018, 12:34 7
Простой статический массив ( заранее известной и не меняющейся длины )
https://en.cppreference.com/w/cpp/container/array

Простой динамический одномерный массив, в который можно добавлять и удалять элементы
https://en.cppreference.com/w/cpp/container/vector

Внизу обеих страниц - живой редактируемый пример, работу которого можно проверить онлайн на разных компиляторах.
Если будете проверять в своей системе, не забудьте подсказать компилятору версию C++ так, как описано в прикреплённой теме.

Из одномерных можно, например, собрать двумерные так, как Вам нарисовали.
1
sourcerer
17.08.2018, 16:57     Двумерный динамический массив: как это работает?
  #8
 Комментарий модератора 
pcmax, пожалуйста, прочитайте правила форума.
Особое внимание обратите на пункт 4.3 (порядок именования тем).
0
17.08.2018, 16:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2018, 16:57
Привет! Вот еще темы с ответами:

Как создать динамический двумерный массив
Можно ли создать на С++ динамический двухмерный масив? Как? int z , x ; cin...

Как создать двумерный динамический массив
Помогите, пожалуйста, в таком вопросе: нужно создать динамический двумерный...

Как объявлять двумерный динамический массив
Доброго времени суток. При выделении памяти для динамического двумерного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru