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

Выделение памяти для массива - C++

Восстановить пароль Регистрация
 
Qwoort
 Аватар для Qwoort
0 / 0 / 0
Регистрация: 04.06.2009
Сообщений: 49
24.10.2013, 01:36     Выделение памяти для массива #1
Пишу такой код:

C++
1
2
3
4
int main()
{
    int* arr1 = new int[2];
}
Всё норм.

Теперь такой:

C++
1
2
3
4
int main()
{
    int** arr1 = new int[2][2];
}
Вылазит ошибка:
error C2440: инициализация: невозможно преобразовать "int (*)[2]" в "int **.

Объясните плз, что не так?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dane.yeah
15 / 15 / 1
Регистрация: 08.04.2012
Сообщений: 133
24.10.2013, 01:40     Выделение памяти для массива #2
C++
1
2
int **matrix = new int *[x];// int - тип элементов матрицы, **matrix - указатель на указатель
// new - ключевое слово, которое выделяет память в куче под x элементов типа int
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
24.10.2013, 01:42     Выделение памяти для массива #3
new int[2][2] - тип выражения - укзататель на int[2] (указатель на массив интов (размер массива - 2) ).
указатель на массив интов - не то же самое, что и указатель на указатель на инт. поэтому одно нельзя присвоить другому.
Qwoort
 Аватар для Qwoort
0 / 0 / 0
Регистрация: 04.06.2009
Сообщений: 49
24.10.2013, 01:58  [ТС]     Выделение памяти для массива #4
Всё, разобрался, теперь другая проблема. Как инициализировать массив?
Пишу код:
C++
1
2
3
4
5
6
7
8
9
int main()
{
    
    int** pole = (int**)new int[20][14];
    int*** fig = (int***)new int[2][4][2];
 
    fig = {{{0,0},{1,0},{1,1},{2,0}},                    
           {{0,1},{1,0},{1,1},{2,0}}};
}
Ошибка в строках 7-8. Код не работает.

Добавлено через 7 минут
Так же VS выводит сообщение при наведении на первую фигурную скобку: "требуется выражение".
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
24.10.2013, 02:06     Выделение памяти для массива #5
то, что вы сделали - херня.
лучшее решение - написать класс для работы с с многомерными массивами.
возможно еще более лучшее и простое - использовать вектора:
C++
1
2
3
4
5
6
typedef std::vector<int> Array1D;
typedef std::vector<Array1D> Array2D;
...
 
прокатит ли инициализация скобками - хз. моя студия их пока не умеет.
Array2D arr2d(2, Array1D(10, 0)); // массив из двух Array1D, в каждом из которых по 10 нулей.
Qwoort
 Аватар для Qwoort
0 / 0 / 0
Регистрация: 04.06.2009
Сообщений: 49
24.10.2013, 02:23  [ТС]     Выделение памяти для массива #6
Я все же хотел бы использовать массивы.
Yandex
Объявления
24.10.2013, 02:23     Выделение памяти для массива
Ответ Создать тему
Опции темы

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