![]() |
|
Модераторы: Poseidon |
![]()
|
|
| Aaron |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 1.12.2005 Где: Новосибирск Репутация: нет Всего: нет |
структура статичная, плз, как динамическую сделать? ;)
Это сообщение отредактировал(а) alexeis1 - 31.10.2006, 17:45 |
||||
|
|||||
| sidslog |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 25.10.2006 Где: Москва Репутация: нет Всего: нет |
Выделять память:
где n - количество слов, m - длина слова |
||||
|
|||||
| Aaron |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 1.12.2005 Где: Новосибирск Репутация: нет Всего: нет |
Извини, можно чуть подробнее, куда код для каждой переменной ставить? Просто голова уже совсем к ночи не варит...
|
|||
|
||||
| Damarus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: 7 Всего: 29 |
||||
|
||||
| Aaron |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 1.12.2005 Где: Новосибирск Репутация: нет Всего: нет |
Я конечно, извиняюсь, но я в такие дебри еще не лез))
Мне б с выделением памяти разобраться.....не подскажешь? |
|||
|
||||
| Kuvaldis |
|
||||||||||||||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 32 Всего: 61 |
Aaron,
У тебя было объявление
Те. задавалась матрица из 100 строк и 20 столбцов Заменим данное объявление таким:
мы объявлили массив из 100 элементов. Элементы - указатели на строки.Пустые указатели. Т.е. первоначально данные и память не выделяются. Это нужно делать явно.Строка - это символьный массив, завершаюшийся символом '\0' (нуль-терминатор) В данном случае жестко задано количество имен - 100 Для выделения памяти для каждого имени необходимо сделать следующую операцию
т.е. существует возможность создавать непрямоугольные матрицы, а переменной длины Избавимся от недостатка ограниченности количества имен. У нас было
Сделаем так
Получился указатель на указатель. Если теперь выделить память для указателя name размером в 40 единиц
то получится массив указателей на 40 элементов, который теперь можно использовать, как я показал раньше. Здесь следует еще раз обратить внимание, что в С имя массива является указателем на его первый элемент. После выделения памяти для указателя mas можно обращаться к его элемнтам как обычно, по иддексу% mas[i]. Остается выделить память для строк. (см. выше) еще раз,Смысл ввода указателя на указатель в том, что заранее не ограничивается не только размер имени, но и само их количество Постарался объяснить как можно проще. Если что, обращайся -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
||||||||||||||
|
|||||||||||||||
| Rockie |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: 13 Всего: 31 |
Aaron, ptr_s - указатель на структуру, память для него выделяется с помощью new, очищается delete
добавлено: динамический массив структур создается похоже, только очищается delete []:
Это сообщение отредактировал(а) Rockie - 31.10.2006, 21:31 -------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
||||
|
|||||
| Damarus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: 7 Всего: 29 |
И всётаки STL рулит
|
|||
|
||||
| Aaron |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 1.12.2005 Где: Новосибирск Репутация: нет Всего: нет |
Вот, вроде есть, и работает:
(вся программа) Если я все сделал правильно, то один вопрос - не допер, как заделать неограниченное кол-во строк? И в общем, все ли правильно я сделал-то? |
|||
|
||||
| Damarus |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: 7 Всего: 29 |
Ты можешь обьяснить, зачем здесь указатель на указатель. Эта структура, как я понимаю, представляет библиотечную запись. Может лучше так:
А затем создавать нужное кол-во записей:
Для этого тебе нужно сделать связанный список. Добавлено @ 11:17 Тут ты создаёшь массивы нулевого размера, ведь len и s равны 0. |
||||
|
|||||
| Kuvaldis |
|
||||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 32 Всего: 61 |
Aaron,
За такое освобождение памяти тебе бы отрезали руки (у тебя идет утечка, так как указатель ты обнулил, а память НЕ освободил) освобождение идет через оператор delete [] <указатель> т.е. в твоем случае:
Добавлено @ 11:19 Damarus прав: здесь нужен список Это сообщение отредактировал(а) Kuvaldis - 4.11.2006, 11:21 -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
||||
|
|||||
| Damarus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: 7 Всего: 29 |
||||
|
||||
| Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 32 Всего: 61 |
Damarus,
Здесь не надо continue. Бесконечный цикл, однако -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
| Damarus |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: 7 Всего: 29 |
Действительно. Не подумал. Спасибо. Добавлено @ 11:37
Добавлено @ 11:43 Aaron, вообщем переписывать надо. Это сообщение отредактировал(а) Damarus - 4.11.2006, 11:40 |
||||
|
|||||
| Aaron |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 1.12.2005 Где: Новосибирск Репутация: нет Всего: нет |
Damarus, не совсем понял первое
про это плз подробнее... путаюсь с этой строкой, либо в ней с синтаксисом что-то нето....в конкретном случае скажем для name как она будет выглядеть? (вылетает с сотней однотипных ошибок) что за список?
благодарю, фукнкция написана год назад, просто вставил ее сюда непеределывая)) Kuvaldis, мда, с этим я заглючил и забыл, пасиб. поправил. Это сообщение отредактировал(а) Aaron - 4.11.2006, 14:13 |
||||
|
|||||
| Damarus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: 7 Всего: 29 |
Ты сначало на ответь, чем у тебя является структура addr. http://ru.wikipedia.org/wiki/Связанный_список
Как уже сказал Kuvaldis, else continue; можно убрать. |
|||
|
||||
| Aaron |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 1.12.2005 Где: Новосибирск Репутация: нет Всего: нет |
||||
|
||||
| Aaron |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 1.12.2005 Где: Новосибирск Репутация: нет Всего: нет |
ау?
|
|||
|
||||
| Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 32 Всего: 61 |
Aaron,
addr - это имя массива. А имя массива - это указатель (!) на данные Если сделать динамический список, который будет изменять свои размеры при добавлении удалении записей, то это будет неэффективно: придется каждый раз копировать его в новое место. Список предствляет собой динамическую структуру данных, в которой помимо самих данных о книгах и т.д. присутствует указатель на следующий такой же узел с данными. почитай здесь -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |