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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
#1

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

24.08.2013, 16:38. Просмотров 1093. Ответов 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];
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.08.2013, 16:38     Создание двумерного динамического массива
Посмотрите здесь:

Использование двумерного динамического массива C++
C++ заполнение динамического двумерного массива
C++ Массив: создание динамического двумерного массива
C++ Создание динамического двумерного массива
C++ Обработка двумерного динамического массива
Cоздание двумерного динамического массива C++
Сортировка двумерного динамического массива C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12698 / 7172 / 800
Регистрация: 27.09.2012
Сообщений: 17,683
Записей в блоге: 2
Завершенные тесты: 1
24.08.2013, 16:42     Создание двумерного динамического массива #2
Цитата Сообщение от BigLow Посмотреть сообщение
Можно ли создавать таким способом?
В C++ нельзя
castaway
Эксперт С++
4872 / 3011 / 370
Регистрация: 10.11.2010
Сообщений: 11,061
Записей в блоге: 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!
1253 / 1136 / 54
Регистрация: 21.04.2012
Сообщений: 2,359
Завершенные тесты: 3
24.08.2013, 16:51     Создание двумерного динамического массива #5
BigLow, можно так:
C++
1
double (*pbeans)[4] = new double[3][4];
castaway
Эксперт С++
4872 / 3011 / 370
Регистрация: 10.11.2010
Сообщений: 11,061
Записей в блоге: 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
Модератор
Эксперт CЭксперт С++
12698 / 7172 / 800
Регистрация: 27.09.2012
Сообщений: 17,683
Записей в блоге: 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++ Создание двумерного динамического массива (вылет из программы)
Создание двумерного динамического массива через функции 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     Создание двумерного динамического массива
Ответ Создать тему
Опции темы

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