Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Qwoort
0 / 0 / 0
Регистрация: 04.06.2009
Сообщений: 49
#1

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

24.10.2013, 01:36. Просмотров 434. Ответов 5
Метки нет (Все метки)

Пишу такой код:

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 **.

Объясните плз, что не так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2013, 01:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выделение памяти для массива (C++):

Выделение памяти для массива - C++
Вопроса похожего не нашел, в задаче требуется считать матрицу из текстового файла,выделение хотелось бы реализовать следующим образом: ...

Выделение памяти для массива - C++
верно ли выделил память для массива если нет поправьте, заранее спасибо) class type { private: int ***p; int x, y, z; public: ...

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

Динамическое выделение памяти для массива - C++
Кто может помочь решить задачу. Для заданного двумерного массива из n строк и m столбцов вывести на экран следующее меню операций: ...

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

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

5
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
1
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
24.10.2013, 01:42 #3
new int[2][2] - тип выражения - укзататель на int[2] (указатель на массив интов (размер массива - 2) ).
указатель на массив интов - не то же самое, что и указатель на указатель на инт. поэтому одно нельзя присвоить другому.
0
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 выводит сообщение при наведении на первую фигурную скобку: "требуется выражение".
0
DU
1484 / 1130 / 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 нулей.
0
Qwoort
0 / 0 / 0
Регистрация: 04.06.2009
Сообщений: 49
24.10.2013, 02:23  [ТС] #6
Я все же хотел бы использовать массивы.
0
24.10.2013, 02:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2013, 02:23
Привет! Вот еще темы с ответами:

Динамическое выделение памяти для двумерного массива - C++
нужна помощь вот тело программы, не могу сделать динамическое выделение памяти для первого двумерного массива. второй массив получается...

Выделение динамической памяти для двумерного массива. - C++
#include &lt;iostream&gt; int main() { setlocale( LC_ALL,&quot;Russian&quot; ); int N, M; std::cout &lt;&lt; &quot;Введите кол-во строк в массиве:...

Выделение динамической памяти для массива точек - C++
Доброго времени суток. Вот у нас есть структура точка struct point { double x,y; } p;

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


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

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

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