Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
BigLow
55 / 55 / 6
Регистрация: 07.07.2013
Сообщений: 345
#1

Создание двумерного динамического массива

24.08.2013, 16:38. Просмотров 1610. Ответов 8
Метки нет (Все метки)

У Хортона А. - Visual C++ 2005 написано как создавать динамические массивы таким способом:

Выделение памяти в свободном хранилище для многомерного массива
предполагает использование new в несколько более сложной форме,
чем для одномерного массива. Если предположить, что у вас уже есть
соответствующим образом указатель pbeans, то получение пространства
памяти для массива beans[3][4], с которым вы имели дело ранее в этой главе,
может выглядеть так:
C++
1
pbeans = new double[3][4];
Можно ли создавать таким способом?

Я всегда думал, что это делается совсем по-другому
C++
1
2
3
4
5
int **pbeans;
 
pbeans = new int*[3];
for (int i=0; i<3; ++i)
    pbeans[i] = new int[4];
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.08.2013, 16:38
Ответы с готовыми решениями:

Создание динамического двумерного массива
void CreateArray(double **DynamicArray, int n){ //??? double...

Массив: создание динамического двумерного массива
Создаю двумерный динамический массив. После ввода m n - конец программы....

Создание двумерного динамического массива в функции
Здравствуйте. Скажите где я допустил ошибку в создании динамического массива?...

Создание двумерного динамического массива (вылет из программы)
Здравствуйте. Создаю двумерный динамический массив: #include &quot;stdafx.h&quot;...

Создание двумерного динамического массива через функции
Помогите разобраться с программой. После вхождения в функцию Fill_mas, я выхожу...

8
Croessmah
++Ͻ
14503 / 8285 / 1556
Регистрация: 27.09.2012
Сообщений: 20,338
Записей в блоге: 3
Завершенные тесты: 1
24.08.2013, 16:42 #2
Цитата Сообщение от BigLow Посмотреть сообщение
Можно ли создавать таким способом?
В C++ нельзя
0
castaway
Эксперт С++
4929 / 3036 / 453
Регистрация: 10.11.2010
Сообщений: 11,116
Записей в блоге: 10
Завершенные тесты: 1
24.08.2013, 16:47 #3
Цитата Сообщение от Croessmah Посмотреть сообщение
В C++ нельзя
Это почему же?
0
BigLow
55 / 55 / 6
Регистрация: 07.07.2013
Сообщений: 345
24.08.2013, 16:48  [ТС] #4
Цитата Сообщение от Croessmah Посмотреть сообщение
В C++ нельзя
А почему тогда он написал это? Наверно не просто так
0
gray_fox
What a waste!
1553 / 1258 / 166
Регистрация: 21.04.2012
Сообщений: 2,636
Завершенные тесты: 3
24.08.2013, 16:51 #5
BigLow, можно так:
C++
1
double (*pbeans)[4] = new double[3][4];
1
castaway
Эксперт С++
4929 / 3036 / 453
Регистрация: 10.11.2010
Сообщений: 11,116
Записей в блоге: 10
Завершенные тесты: 1
24.08.2013, 16:53 #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
 
using namespace std;
 
int main()
{
    int (*arr)[5] = new int [5][5];
 
    for ( int a = 0; a < 5; a++ ) {
        for ( int b = 0; b < 5; b++ ) {
            arr[a][b] = 0;
        }
    }
 
    arr[1][2] = 8;
 
    for ( int a = 0; a < 5; a++ ) {
        for ( int b = 0; b < 5; b++ ) {
            cout << " " << arr[a][b];
        }
        cout << endl;
    }
 
    delete [] arr;
 
    return 0;
}
1
BigLow
55 / 55 / 6
Регистрация: 07.07.2013
Сообщений: 345
24.08.2013, 16:58  [ТС] #7
Цитата Сообщение от gray_fox Посмотреть сообщение
double (*pbeans)[4] = new double[3][4];
Цитата Сообщение от castaway Посмотреть сообщение
int (*arr)[5] = new int [5][5];
Конструкция немного запутанная, но общий смысл понятен ) Спасибо
0
Croessmah
++Ͻ
14503 / 8285 / 1556
Регистрация: 27.09.2012
Сообщений: 20,338
Записей в блоге: 3
Завершенные тесты: 1
24.08.2013, 18:35 #8
Цитата Сообщение от castaway Посмотреть сообщение
Это почему же?
Цитата Сообщение от BigLow Посмотреть сообщение
как создавать динамические массивы таким способом
Потому что при
C++
1
int (*arr)[5] = new int [5][5];
он уже будет недодинамический, он просто будет выделен в динамической памяти, но одна размерность будет определена во время компиляции и будет константна
1
BigLow
55 / 55 / 6
Регистрация: 07.07.2013
Сообщений: 345
24.08.2013, 19:01  [ТС] #9
Цитата Сообщение от Croessmah Посмотреть сообщение
он уже будет недодинамический
да, это понятно.
вот единственное, почему автор книги не написал нормальный способ создания двумерного динамического массива
C++
1
2
3
4
5
int **pbeans;
 
pbeans = new int*[3];
for (int i=0; i<3; ++i)
    pbeans[i] = new int[4];
пусть это останется на его совести
0
24.08.2013, 19:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2013, 19:01

Метод-член класса для создания одномерного массива из отрицательных элементов двумерного динамического массива
Помогите, пожалуйста, нужно разработать метод-член класса для создания...

Копия двумерного динамического массива
Как создать копию двумерного динамического массива? Имеется двумерный...

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


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

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

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