![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
t45t
Участник клуба
Регистрация: 20.03.2012
Сообщений: 1,849
|
![]()
Собственно весь вопрос, но с поправкой...разного типа(возможно ли).
Если можно, то приведите примеры на языках С++, Делфи и Ява. Есть идея только с использованием функци- пользовательских типов.
from dark to light)
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,504
|
![]()
Ну, в Паскале есть волшебное слово var
Код:
|
![]() |
![]() |
![]() |
#3 |
t45t
Участник клуба
Регистрация: 20.03.2012
Сообщений: 1,849
|
![]()
Возвращать значения через аргумент функции? Это говнокод)
from dark to light)
|
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 30.07.2008
Сообщений: 1,609
|
![]()
Функция не может возвращать множество значений. Когда я начинал изучать программирование в 2001 году и читал книгу Кернигана, Ричи, то там было указано, что возвращаться может только одно значение.
Чтобы обойти подобные ограничения, используются структуры и указатели. В структуру можно записать значения разного типа и вернуть указатель на структуру, динамически выделив память под структуру либо функцией malloc языка С, либо оператором new языка С++. Простой пример Код:
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
|
![]() |
![]() |
![]() |
#5 |
t45t
Участник клуба
Регистрация: 20.03.2012
Сообщений: 1,849
|
![]()
Вы тут использовали указатель на функцию типа структуры, как я понял. А что если написать просто struct typ func()...
Код:
Чем чреват мой вариант (если вообще скомпилируется) А вот пример такой задачи, придумав которую создал эту тему ![]() Написать функцию, возвращающую массив типа структуры, размер массива генерируется рандомом. По сути решил то, что возвращать надо указатель на массив, точнее на первый элемент, но далее сложность в выводе его в main... Код:
from dark to light)
Последний раз редактировалось Алексей_2012; 27.08.2015 в 06:55. |
![]() |
![]() |
![]() |
#6 |
Участник клуба
Регистрация: 30.07.2008
Сообщений: 1,609
|
![]()
У вас переменная локальная для функции. Она может уничтожиться при выходе из функции.
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
|
![]() |
![]() |
![]() |
#7 |
t45t
Участник клуба
Регистрация: 20.03.2012
Сообщений: 1,849
|
![]()
Исправил, на счет использования рандома в области вне функции-не уверен. Пишу на потолке. В листинге выше (где не массив) структура - это глобальная переменная, поэтому, думаю , можно использовать ссылку, т.к. деструктурирования данных не произойдет.
А как быть с листингом два, где массив? как можно и можно ли решить задачу так (двумя способами ): Возвращая указатель Возвращая ссылку.
from dark to light)
Последний раз редактировалось Алексей_2012; 27.08.2015 в 07:21. |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 09.02.2013
Сообщений: 60
|
![]()
Несколько значений вернуть нельзя(по крайней мере на Java).
НО можно запихнуть несколько объектов в какую либо коллекцию (массив, список, ХэшМапа и т.п.) и вернуть коллекцию: Код:
Код:
П.С. Можно также как писали выше создать класс который содержит несколько полей и вернуть объект этого класса. Последний раз редактировалось tolikprankster; 27.08.2015 в 07:33. |
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Вы можете создать собственную структуру и возвращать ее. Например вектор (одномерный массив, в котором могут храниться значения разных типов). Во всякой там функциональщине подобные структуры идут дефолтом без сторонних библиотек и считаются как нечто само собой разумеющееся.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#10 |
Участник клуба
Регистрация: 30.07.2008
Сообщений: 1,609
|
![]() Код:
И возвращается не структура, а поле структуры. Код:
Переписал немного ваш код. Только возврата из функции не делаю, так как смысла в таком примере нет. Код:
Код:
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Паскаль(множество значений и цикл) | Ксюшка2 | Помощь студентам | 5 | 30.01.2013 09:58 |
Может ли функция возвращать массив? | TzX | Общие вопросы Delphi | 4 | 20.09.2010 19:27 |
что будет возвращать функция при различных pos | vasyapupkin | Общие вопросы C/C++ | 4 | 03.11.2009 20:48 |
Паскаль,функция и множество | pavlentus | Помощь студентам | 4 | 20.04.2009 20:39 |