|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.10.2015, 00:32 | #1 |
Пользователь
Регистрация: 26.06.2009
Сообщений: 43
|
Динамические массивы.
Помогите разобраться с динамическими массивами,ранее работал на Java, и подобных проблем не имел.
В общем есть хендлер с объявлением дин. массива: Код:
Код:
Последний раз редактировалось sasha1993; 06.10.2015 в 01:17. |
06.10.2015, 08:11 | #2 | |
Форумчанин
Регистрация: 07.08.2011
Сообщений: 576
|
Цитата:
Так что тебе придется хранить размер массива. Можешь так же, использовать std::vector. В этом классе есть метод size(), возвращает размер Последний раз редактировалось SAMOUCHKA; 06.10.2015 в 08:13. |
|
06.10.2015, 08:17 | #3 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Или std::array для неизменяемого размера.
А обычные С массивы лучше не использовать беез необходимости.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
06.10.2015, 09:32 | #4 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Как выше правильно заметили, определить размер в массиве (классическом) не возможно. Но, если уж так хочется, можно воспользоваться библиотекой STL. Создать вектор. Вот в векторе, длину массива можно определить.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
06.10.2015, 09:34 | #5 |
Пользователь
Регистрация: 26.06.2009
Сообщений: 43
|
Можно уточнить,почему не стоит использовать обычные массивы,какие подводные камни ?
|
06.10.2015, 09:56 | #6 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Чтобы не париться об управлении памятью и изменении размера самому.
Вы ж после Java наверно даже вызвать delete для этого массива забыли. Ну и некоторые дополнительные фичи. Например, vector можно передавать либо по значению (копировать), либо по ссылке/const ссылке, а С массивы это всегда просто указатель. Удобнее использовать с STL функциями (.begin(), .end()).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 06.10.2015 в 10:08. |
06.10.2015, 22:51 | #7 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
который описан в стандарте языка вполне себе возможно. причем времени компиляции. но если вы имеете ввиду вовсе не "классический массив", и совсем даже не "массив", а указатель на начала блока памяти, то все равно возможно. правда у разных компиляторов - разные расширения на этот счет. например, у cl (вижал студия): https://msdn.microsoft.com/en-us/library/z2s077bc.aspx file>>s; int n=stoi(s); model.vertices = std::vector<General::vec_3>(); ... const size_t length = model.vertices.size(); [/CODE] Последний раз редактировалось Stilet; 07.10.2015 в 08:17. |
|
06.10.2015, 23:16 | #8 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Ой-ой-ой. Попробуйте определить размерность у такой конструкции:
Код:
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
07.10.2015, 00:18 | #9 | |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
Цитата:
Код:
Размер будет вычислен на этапе компиляции. Не стоит путать указатель и массив, в C++ это разные вещи. Последний раз редактировалось Croessmah; 07.10.2015 в 00:21. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Динамические массивы (c++) | vanek1 | Помощь студентам | 2 | 20.12.2010 22:50 |
Динамические массивы | Цветик | Общие вопросы C/C++ | 5 | 07.11.2010 20:35 |
Динамические массивы с++ | maxsept | Общие вопросы C/C++ | 2 | 27.10.2010 20:16 |
Динамические массивы и массивы варианты | N@stya | Помощь студентам | 0 | 11.06.2010 21:09 |
Динамические массивы в С | Ol'ga | Фриланс | 6 | 08.06.2010 10:50 |