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

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

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

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

24.08.2013, 16:38. Просмотров 1268. Ответов 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++
void CreateArray(double **DynamicArray, int n){ //??? double **DynamicArray = new double* ; for (int Count = 0; Count &lt; 2*n;...

Создание двумерного динамического массива в функции - C++
Здравствуйте. Скажите где я допустил ошибку в создании динамического массива? #include&lt;stdio.h&gt; #include&lt;conio.h&gt; #include&lt;stdlib.h&gt; ...

Массив: создание динамического двумерного массива - C++
Создаю двумерный динамический массив. После ввода m n - конец программы. Помогите, пожалуйста. # include &lt;iostream&gt; using namespace...

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Croessmah
Модератор
Эксперт CЭксперт С++
13133 / 7396 / 828
Регистрация: 27.09.2012
Сообщений: 18,227
Записей в блоге: 3
Завершенные тесты: 1
24.08.2013, 16:42 #2
Цитата Сообщение от BigLow Посмотреть сообщение
Можно ли создавать таким способом?
В C++ нельзя
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 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!
1507 / 1210 / 68
Регистрация: 21.04.2012
Сообщений: 2,545
Завершенные тесты: 3
24.08.2013, 16:51 #5
BigLow, можно так:
C++
1
double (*pbeans)[4] = new double[3][4];
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 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Эксперт С++
13133 / 7396 / 828
Регистрация: 27.09.2012
Сообщений: 18,227
Записей в блоге: 3
Завершенные тесты: 1
24.08.2013, 18:35 #8
Цитата Сообщение от castaway Посмотреть сообщение
Это почему же?
Цитата Сообщение от BigLow Посмотреть сообщение
как создавать динамические массивы таким способом
Потому что при
C++
1
int (*arr)[5] = new int [5][5];
он уже будет недодинамический, он просто будет выделен в динамической памяти, но одна размерность будет определена во время компиляции и будет константна
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];
пусть это останется на его совести
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2013, 19:01
Привет! Вот еще темы с ответами:

Заполнение двумерного динамического массива - C++
Доброго времени суток! Уважаемые коллеги! Второй день пытаюсь разобраться с вводом в char** символов, точнее строки символов. Создал...

Сортировка двумерного динамического массива - C++
Уважаемые форумчане, при сортировке и выводе отсортированного массива в первой строке вместо нормальных значений выводит мусор, ковыряюсь в...

Инициализация двумерного Динамического массива - C++
У меня вопрос. Могу ли я создать двумерный динамический массив и инициализировать его своими значениями в коде программы. #include...

заполнение динамического двумерного массива - C++
Дано число n. Создайте массив int A и заполните его по спирали начиная с числа 0 в центральной клетке A. Спираль выходит вверх, далее...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.08.2013, 19:01
Ответ Создать тему
Опции темы

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