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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 5.00
RareScrap
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 85
#1

Объявить массив? Запросто! Объявить массив массивов? А как это? - C++

31.10.2013, 20:48. Просмотров 1499. Ответов 5
Метки нет (Все метки)

Доброго времени суток!

Конечно, все знают, как объявить массив!
C++
1
2
3
4
int main ()
{
    int array[5];
}
Конечно, все знают, что можно объявить его и вот таким способом без указания конкретного размера массива!
C++
1
2
3
4
int main ()
{
    int array[] = {1, 2, 3};
}
Но как таким способом объявить массив массивов (или правильно назвать это матрицей?)? Вот так?
C++
1
2
3
4
int main ()
{
    int a[][] = {{1, 2}, {3, 4}};
}
Компилятор ругается.

Скажите, как же объявить массив массивов таким способом? И часто ли используется такой способ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2013, 20:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Объявить массив? Запросто! Объявить массив массивов? А как это? (C++):

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

Где и как объявить массив? - C++
Вообщем задача такая: нужно чтоб значения из Текстбоксов записывались в массив при нажатии кнопки. размер массива указывается при...

Как объявить массив структур? - C++
Здраствуйте! Подскажите пожалуйста как объявляется массив структур и как потом записать элементы туда? Например такая структура: ...

Как объявить массив указателей? - C++
Напишите объявление переменной - одномерного массива StringArray указателей на символы длины N.

Как объявить указатель на массив? - C++
Читаю книгу С.Прата, наткнулся на это: short (*pas) = &tell; // pas указывает на массив из 20 элементов short Если опустить круглые...

Как объявить массив структур? - C++
Как задать массив в С++? Type gostinica= record FIO:string; nomer:integer; cena: integer; kolvo: integer; itogo:integer; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
31.10.2013, 20:57 #2
C++
1
2
3
4
int m = 5, n = 6;
int ** mass = new int* [m];
for (int i = 0; i<m;++i)
   mass[i] = new int [n];
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
31.10.2013, 20:57 #3
C++
1
int a[4][4]={{2, 3, 4, 1}, {3, 0, 2, 8}, {23, 0, 1, 63}, {2, 6, 3, 7}};
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6447 / 3094 / 306
Регистрация: 04.12.2011
Сообщений: 8,567
Записей в блоге: 4
31.10.2013, 21:05 #4
RareScrap, при объявлении с инициализацией допускает не указывать число строк:
C++
1
int A[][2] = {{1,2},{3,4}};
это объявления 2-D массива на стеке совмещенное с инициализацией списком. При этом гарантируется непрерывность выделенной области памяти.
Объявление и выделение в куче показал metaluga145.
RareScrap
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 85
01.11.2013, 18:26  [ТС] #5
А почему можно объявить массив помощью фигурных скобок, при этом не указывая конкретное значение элементов в массиве между квадратными скобками, а с матрицей такой трюк не проходит?
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6447 / 3094 / 306
Регистрация: 04.12.2011
Сообщений: 8,567
Записей в блоге: 4
01.11.2013, 18:47 #6
Цитата Сообщение от RareScrap Посмотреть сообщение
А почему можно объявить массив помощью фигурных скобок, при этом не указывая конкретное значение элементов в массиве между квадратными скобками, а с матрицей такой трюк не проходит?
RareScrap, об этом написано в литературе. С одномерным массивам компилятору всё ясно из самого списка, если размерность не указана. А многомерные массивы в С++ это массивы массивов. Такие массивы могут быть не только прямоугольными, но и зубчатыми. То есть размерность их строк может не совпадать между собой. При этом можно объявить прямоугольный 2-D массив на стеке, указав явно размерность строк (количество столбцов). Количество строк компилятор вычислит просмотрев список.
Дело ещё в том, что если размерность указана явно, то список инициализации может быть неполным.
Для одномерного массива это может выглядеть так:
C++
1
int A[10]={1,2,3};
списком инициализированы первые 3 элемента.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2013, 18:47
Привет! Вот еще темы с ответами:

Как объявить массив указателей на функции? - C++
с юморком, для смелых)) Как объявить массив указателей на функции, возвращающие указатели на массив указателив на строкы?

Как правильно объявить массив строк c++ - C++
Подскажите пожалуйста, как реализовать: нужно корректно обьявить массив символов(неполучается) (точнее массив строк), который прога будет...

Как объявить двумерный динамический массив - C++
int *matrix = new int ; че ругается ? а как сделать если без констант надо ?

Как объявить и инициализировать двумерный массив - C++
Доброго времени суток, уважаемые форумчане! Недавно решил постичь ДЗЕН STL-контейнеров C++ и начал с векторов. С одномерными векторами...


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

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

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