Инициализация динамического массива структур
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Как можно инициализировать массив структур, память под который выделена с помощью операции new? Пытался сделать так — не получается... Помогите, пожалуйста :)
Одно из двух не имеет смысла делать: либо динамически выделять память, либо статически инициализировать структуру.
Когда ты пишешь в программе данные для инициализации переменной, то при работе программы эти данные уже будут занимать память, а обратиться к этим данным можно через имя переменной соотв. типа.
Череп, пролей свет в темноту. Потому что, много пишут о том, как что-либо использовать, но мало о том где и для чего это используется.
Если я правильно понял, то динамически выделяемые структуры предназначены исключительно для ввода, хранения и отображения информации. И инициализировать динамическую структуру можно только с помощью cin и функций членов getline() и get() во время выполнения программы, либо почленно.
Например так:
Неправильно ты понял.
Динамически создаваемые структуры, так же как и обычные (автоматические) структуры могут использоваться для любых целей. В С++ структура — это класс, в котором все члены и методы открытые (
public
). Т.е. структура, в примитивном случае, — это способ собрать в один флакон разнотипные данные. Например, структуру можно использовать для возврата из функции нескольких значений: функция «упаковывает» результаты своей работы в переменную-структуру и возвращает её вызывающему коду.Твою программу можно переписать с минимальнейшими изменениями, что бы она не использовала динамическое распределение памяти:
Между этими двумя вариантами отличие только в том, где будет выделяться память для хранения структур: в куче (твой вариант), или в стеке (мой вариант). Работа с кучей предпочтительна для больших объёмов данных, но работает чуть медленнее за счёт необходимости выделения и освобождения памяти в куче.
Ты не мешай в одну кучу концепцию структур (и, заодно, классов) и способ создания переменной типа структуры.
Но, с другой стороны, в С/С++ надо всегда чётко понимать где и как выделяется/освобождается память при работе с данными различных типов. И что собственно содержит переменная: данные, указатель на данные (адрес в памяти) или ссылку на данные (тоже адрес в памяти, но с отличным от указателя синтаксисом). Особенно надо быть внимательным при передаче параметров в функции и возврате результатов.
На счёт того, для чего могут использоваться структуры — возьми пяток книг по С++ и почитай про структуры. Я думаю, что 5-10-15 примеров использования структур ты найдёшь )) А если учесть, что классы — это структуры с разграничением доступа, то весь мир ООП — к твоим ногам )))
Спасибо БОЛЬШОЕ, исчерпывающе:)