![]() |
|
Модераторы: bsa |
![]()
|
|
| jey7 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 7.1.2010 Репутация: нет Всего: нет |
Мы уже разобрались как создать и изменить размер массива
создание: reader *arr2=(reader*)malloc(sizeof(reader)*size_2); изменение размера: arr2=(reader*)realloc(arr2, sizeof(reader)*size_2); А как быть если мне нужно удалить один элемент массива??? |
|||
|
||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 5 Всего: 32 |
Сдвинуть все элементы на один влево, затерев тот, что нужно удалить (естественно копированием). Ну, если ещё и память нужно подчистить сразу (хотя зачем?) можно и realloc вызвать. Теоретически, если размер меньше, то массив должен остаться на прежнем месте.
-------------------- ![]() |
|||
|
||||
| jey7 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 7.1.2010 Репутация: нет Всего: нет |
Отсюда вопрос как копировать?
|
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
почленно
|
|||
|
||||
| jey7 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 7.1.2010 Репутация: нет Всего: нет |
Вместительно. Можно подробнее |
|||
|
||||
| zim22 |
|
||||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
Это сообщение отредактировал(а) zim22 - 7.1.2010, 23:19 |
||||
|
|||||
| jey7 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 7.1.2010 Репутация: нет Всего: нет |
Впринципе работает, только массив нужно уменьшать, после такого насколько я понял |
|||
|
||||
| Cheloveck |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 5 Всего: 32 |
А если потом захочешь добавить, то снова реаллочить надо будет. Только помни, что пр реаллоке в большую сторону память, чаще всего, выделяется заново, то есть копируется весь массив в новое место. P.S. а почему malloc? Ты на Си пишешь или на C++? -------------------- ![]() |
||||
|
|||||
| jey7 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 7.1.2010 Репутация: нет Всего: нет |
Вообще курс си , но многое используется с с++, так вот так вот. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Обычно, массивы не уменьшают при уменьшении количества элементов. Так как операции выделения/освобождения памяти достаточно медленные, то даже выделяют с запасом (например, std::vector, когда ты в него добавляешь данные, а буфер у него закончился, то он выделяет память под новый буфер, который в 2 раза больше закончившегося). |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |