|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.08.2015, 03:22 | #1 |
t45t
Участник клуба
Регистрация: 20.03.2012
Сообщений: 1,849
|
Может ли функция возвращать множество значений?
Собственно весь вопрос, но с поправкой...разного типа(возможно ли).
Если можно, то приведите примеры на языках С++, Делфи и Ява. Есть идея только с использованием функци- пользовательских типов.
from dark to light)
|
27.08.2015, 04:17 | #2 |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,499
|
Ну, в Паскале есть волшебное слово var
Код:
|
27.08.2015, 04:57 | #3 |
t45t
Участник клуба
Регистрация: 20.03.2012
Сообщений: 1,849
|
Возвращать значения через аргумент функции? Это говнокод)
from dark to light)
|
27.08.2015, 05:23 | #4 |
Участник клуба
Регистрация: 30.07.2008
Сообщений: 1,601
|
Функция не может возвращать множество значений. Когда я начинал изучать программирование в 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"
|
27.08.2015, 05:50 | #5 |
t45t
Участник клуба
Регистрация: 20.03.2012
Сообщений: 1,849
|
Вы тут использовали указатель на функцию типа структуры, как я понял. А что если написать просто struct typ func()...
Код:
Чем чреват мой вариант (если вообще скомпилируется) А вот пример такой задачи, придумав которую создал эту тему Написать функцию, возвращающую массив типа структуры, размер массива генерируется рандомом. По сути решил то, что возвращать надо указатель на массив, точнее на первый элемент, но далее сложность в выводе его в main... Код:
from dark to light)
Последний раз редактировалось Алексей_2012; 27.08.2015 в 06:55. |
27.08.2015, 06:43 | #6 |
Участник клуба
Регистрация: 30.07.2008
Сообщений: 1,601
|
У вас переменная локальная для функции. Она может уничтожиться при выходе из функции.
"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"
|
27.08.2015, 06:56 | #7 |
t45t
Участник клуба
Регистрация: 20.03.2012
Сообщений: 1,849
|
Исправил, на счет использования рандома в области вне функции-не уверен. Пишу на потолке. В листинге выше (где не массив) структура - это глобальная переменная, поэтому, думаю , можно использовать ссылку, т.к. деструктурирования данных не произойдет.
А как быть с листингом два, где массив? как можно и можно ли решить задачу так (двумя способами ): Возвращая указатель Возвращая ссылку.
from dark to light)
Последний раз редактировалось Алексей_2012; 27.08.2015 в 07:21. |
27.08.2015, 07:31 | #8 |
Пользователь
Регистрация: 09.02.2013
Сообщений: 60
|
Несколько значений вернуть нельзя(по крайней мере на Java).
НО можно запихнуть несколько объектов в какую либо коллекцию (массив, список, ХэшМапа и т.п.) и вернуть коллекцию: Код:
Код:
П.С. Можно также как писали выше создать класс который содержит несколько полей и вернуть объект этого класса. Последний раз редактировалось tolikprankster; 27.08.2015 в 07:33. |
27.08.2015, 07:36 | #9 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Вы можете создать собственную структуру и возвращать ее. Например вектор (одномерный массив, в котором могут храниться значения разных типов). Во всякой там функциональщине подобные структуры идут дефолтом без сторонних библиотек и считаются как нечто само собой разумеющееся.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
27.08.2015, 07:36 | #10 |
Участник клуба
Регистрация: 30.07.2008
Сообщений: 1,601
|
Код:
И возвращается не структура, а поле структуры. Код:
Переписал немного ваш код. Только возврата из функции не делаю, так как смысла в таком примере нет. Код:
Код:
"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 |