Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 17.10.2015
Сообщений: 26

Как функция возвращает указатель на структуру в массив указателей

17.10.2015, 19:01. Показов 2253. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Друзья, следующий вопрос, у меня есть функция, которая:
создает указатель на структуру-> выделяет память-> заполняет из файла-> и возвращает его(указатель),
C++
1
2
3
4
5
6
7
TheSight *makeStationInfoList(ifstream &oFile){
    TheSight *sight = new TheSight; // эту структуру(указатель на неё) будем возвращать
 
    "Тут заполняем структуру созданную"
 
    return sight;
}
на выходе я пытаюсь )))) эти указатели свести в динамический массив указателей ,

C++
1
2
3
4
5
TheSight** allSights = new TheSight*[]; //  выделяем память под массив указателей, 
    int i;
    for (i = 0; !openedFile.eof(); i++){ // (opendFile.eof - конец файла)
        allSights[i] = makeStationInfoList(openedFile);
    }
собственно выводится ошибка ".exe вызвал срабатывание точки останова." вовремя компиляции, где-то вычитал что это косяк с памятью , уже 7 часов сижу над кодом (не конкретно над этой проблемой, а в целом) глаз вместе с мозгом замылились на пару ))) подскажите пожалуйста где ошибка в коде.
Или я вообще что-то не то пытаюсь сделать? В остальном коде ошибок нет, я его по кускам компилировал, и только когда начал со структурой работать начались косяки.
P.S. я пытаюсь создать и заполнить массив структур.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.10.2015, 19:01
Ответы с готовыми решениями:

Функция формирует массив и возвращает указатель на него
Задание: написать функцию с аргументами: вещественное х, целое n. Функция формирует массив у: уk=\frac{{x}^{2k}}{k!} k=0,1,..,n-1 и...

Функция получает массив указателей на строки и возвращает строку в динамической памяти, содержащую объединенный текст из входных строк
Функция получает массив указателей на строки и возвращает строку в динамической памяти, содержащую объединенный текст из входных строк.

Функция принимает указатель на void и возвращает указатель на int
Запишите прототип функции, которая принимает указатель на void и возвращает указатель на int.

5
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
17.10.2015, 19:21
Лучший ответ Сообщение было отмечено Gloat как решение

Решение

при выделении памяти под массив указывайте его размер. либо используйте вектор
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
17.10.2015, 22:35
Цитата Сообщение от Gloat Посмотреть сообщение
C++
1
new TheSight*[];
Скажи спасибо майкрософту. Любой другой компилятор такое бы не разрешил.
P.S. В данном случае, это эквивалентно:
C++
1
new TheSight*[0];
со всеми вытекающими.
1
0 / 0 / 0
Регистрация: 17.10.2015
Сообщений: 26
18.10.2015, 00:27  [ТС]
Забавно, пока ездил по делам, тоже подумал... а почему бы вектор указателей не создать... всё получилось, спасибо за помощь

Добавлено через 3 минуты
Цитата Сообщение от Tulosba Посмотреть сообщение
Скажи спасибо майкрософту. Любой другой компилятор такое бы не разрешил.
P.S. В данном случае, это эквивалентно:
C++
1
new TheSight*[0];
со всеми вытекающими.
Цитата Сообщение от Tulosba Посмотреть сообщение
Сообщение от Gloat
Код C++Выделить код
1
new TheSight*[];
Скажи спасибо майкрософту. Любой другой компилятор такое бы не разрешил.
P.S. В данном случае, это эквивалентно:
Всё верно, я учусь на VS 2013, и привык, что мне так разрешают делать, с другой стороны, вот Вы намекаете мол "надо указывать размер", так а если размер я не знаю, соответственно я выделил память под указатели, или тут без вектора не обойтись, или я тупо что-то не правильно написал?
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
18.10.2015, 00:40
Gloat, выделять память надо тогда, когда размер известен. Если размера нет, то и выделять ещё рановато. Пустые [] интерпретируются как [0], т.е. массив из нуля элементов, а не массив из неизвестного кол-ва элементов. Поэтому да, написано неправильно.
1
0 / 0 / 0
Регистрация: 17.10.2015
Сообщений: 26
18.10.2015, 00:45  [ТС]
Tulosba, Понято, спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.10.2015, 00:45
Помогаю со студенческими работами здесь

Реализовать 3 функции, каждая из которых принимает указатель на массив и количество элементов и возвращает указатель на новый массив.
Пишу в Microsoft Visual Studio ->Win32 Console application ->C++. Условие:Реализовать 3 функции, каждая из которых принимает указатель на...

Как сделать функцию, возвращающую указатель на функцию (которая в свою очередь возвращает указатель на массив)
Изучаю c++ по одной книжке.Она говорить не умеет.. Так вот понадобилось написать функцию,которая как параметр получает указатель на...

Функция принимает указатель на динамический массив и возвращает его же, но без чисел полиндромов (читается с обоих сторон одинаково - 234432)
Вот мое решение, подскажите, пожалуйста, что изменить, чтобы заработала программа: # include <iostream> # include...

Как обойтись без указателей и указателей на указатель?
Ибо не совсем выходит понять,что на что тут указывает #include "stdafx.h" #include <iostream> #include <stdlib.h> using...

Функция возвращает структуру
Всем привет. Есть код взят из книжки "С++ 2008 для начинающих", ошибок при проверке не выдает , но при отдалке пишет: нет прав на чтение....


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru