Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
24.08.2013, 16:38     Создание двумерного динамического массива #1
У Хортона А. - 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];
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11823 / 6802 / 769
Регистрация: 27.09.2012
Сообщений: 16,870
Записей в блоге: 2
Завершенные тесты: 1
24.08.2013, 16:42     Создание двумерного динамического массива #2
Цитата Сообщение от BigLow Посмотреть сообщение
Можно ли создавать таким способом?
В C++ нельзя
castaway
Эксперт С++
4842 / 2981 / 367
Регистрация: 10.11.2010
Сообщений: 11,013
Записей в блоге: 10
Завершенные тесты: 1
24.08.2013, 16:47     Создание двумерного динамического массива #3
Цитата Сообщение от Croessmah Посмотреть сообщение
В C++ нельзя
Это почему же?
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
24.08.2013, 16:48  [ТС]     Создание двумерного динамического массива #4
Цитата Сообщение от Croessmah Посмотреть сообщение
В C++ нельзя
А почему тогда он написал это? Наверно не просто так
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
24.08.2013, 16:51     Создание двумерного динамического массива #5
BigLow, можно так:
C++
1
double (*pbeans)[4] = new double[3][4];
castaway
Эксперт С++
4842 / 2981 / 367
Регистрация: 10.11.2010
Сообщений: 11,013
Записей в блоге: 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;
}
BigLow
55 / 55 / 2
Регистрация: 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];
Конструкция немного запутанная, но общий смысл понятен ) Спасибо
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11823 / 6802 / 769
Регистрация: 27.09.2012
Сообщений: 16,870
Записей в блоге: 2
Завершенные тесты: 1
24.08.2013, 18:35     Создание двумерного динамического массива #8
Цитата Сообщение от castaway Посмотреть сообщение
Это почему же?
Цитата Сообщение от BigLow Посмотреть сообщение
как создавать динамические массивы таким способом
Потому что при
C++
1
int (*arr)[5] = new int [5][5];
он уже будет недодинамический, он просто будет выделен в динамической памяти, но одна размерность будет определена во время компиляции и будет константна
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2013, 19:01     Создание двумерного динамического массива
Еще ссылки по теме:

C++ Обработка двумерного динамического массива
C++ Использование динамического двумерного массива
Создание двумерного динамического массива в функции C++

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

Или воспользуйтесь поиском по форуму:
BigLow
55 / 55 / 2
Регистрация: 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];
пусть это останется на его совести
Yandex
Объявления
24.08.2013, 19:01     Создание двумерного динамического массива
Ответ Создать тему
Опции темы

Текущее время: 09:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru