|
166 / 90 / 38
Регистрация: 29.06.2015
Сообщений: 1,100
|
||||||
В чем разница между типом функции и типом возвращаемого значения?19.08.2015, 08:48. Показов 5290. Ответов 39
Метки нет (Все метки)
Читаю статью
https:// code-live. ru/post/cpp-functions/ (ссылку изменил дабы не делать рекламу) Там написано - Любая функция имеет тип, также, как и любая переменная. - Функция может возвращать значение, тип которого в большинстве случаев аналогично типу самой функции. Пример -----------------------------
Я этот код вижу так тип_возвращаемого_значения имя_функции (тип_аргумента аргумент_функции) { тело_функции возвращаемое_значение_согласно_типу_возв ращаемого_значения } Что такое тип функции (он тут есть?), в чем разница между типом функции и типом возвращаемого значения и как тип функции и тип возвращаемого значения могут различаться?
0
|
||||||
| 19.08.2015, 08:48 | |
|
Ответы с готовыми решениями:
39
Сложности с типом возвращаемого значения Серийного номера
|
|
166 / 90 / 38
Регистрация: 29.06.2015
Сообщений: 1,100
|
||
| 19.08.2015, 13:03 [ТС] | ||
|
Основные типы в С++ делятся на три категории: целочисленные, с плавающей запятой и void. int это правило? string это правило? Предположим, что тип функции определяет как компилятор будет располагать переменные в стеке перед вызовом процедуры......... Но вы не ответили на вопрос где в коде тип функции и где тип возвращаемого значения? Мне не нужно знать, кто и что определяет, располагает и т.д. Я не прошу вас это рассказать. Мне нужно 2 слова. Смотрите int a=5; //Слово int, тип данных int. Я понимаю. Вижу ключевое слово, обозначающее тип данных. string check_pass (string password) // Вижу ключевое слово string. Что оно обозначает? Тип функции или тип возвращаемого значения? Вы понимаете, я уже час пытаюсь сказать - что должно быть 2 ключевых слова. Одно - тип функции, другое тип возвращаемого значения. Два слова. А тут одно. В этом весь вопрос. Я даже предположил, что это одно слово сразу определяет 2 типа (а какой вывод ещё может быть?). Но вы отвергли это предположение. Где второе слово? Откуда вы взяли что тип функции string? Как вы вычислили это? Этой информации нет в коде. Физически нет.
0
|
||
|
70 / 64 / 40
Регистрация: 17.02.2014
Сообщений: 265
|
|
| 19.08.2015, 13:33 | |
|
useruser, У функции есть только возвращаемое значение и сигнатура в которую входит имя функции и его аргументы, больше там ничего нету (исключение - методы класса где добавляются некоторые другие особенности).
0
|
|
|
166 / 90 / 38
Регистрация: 29.06.2015
Сообщений: 1,100
|
|||||||||||||
| 19.08.2015, 13:36 [ТС] | |||||||||||||
|
Хорошо, попробую по другому. Многие языки программирования схожи. В основном. Код делфи.
function needs result type. Обратимся к официальной справке разработчика. You have declared a function, but have not specified a return type. Что означает - Вы объявили функцию, но не указали тип возвращаемого значения. Вывод - Int64 тип возвращаемого значения. Где тип функции? Подозреваю, что его нет. В с++ синтаксис другой, но количество операторов тоже, только изменено их расположение
Может нет никакого типа функции, а есть только тип возвращаемого значения? Добавлено через 33 секунды Ищу уже 3 часа. Не могу понять где.
0
|
|||||||||||||
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|||||||||||||
| 19.08.2015, 14:09 | |||||||||||||
|
Тут функция имеет тип Int64(AnsiString). как правильно записать это в delphi не знаю, но функциональные типы там то же есть Функцию можно рассматривать как черный ящик, в который кладешь набор объектов, они как-то обрабатываются, и получается другой объект - возвращаемое значение. Например sin - принимает double, возвращает double. Тип функции double(double). Тип Возвращаемого значения double. cos - аналогично. Тип функции double(double), возвращаемое значение - double. т.е. у функций sin и cos один и тот же и тип функций, и тип возвращаемого значения. у функции с прототипом
тип возвращаемого значения такой же как у sin и cos, но тип функции уже другой.
1
|
|||||||||||||
|
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
|
||
| 19.08.2015, 14:19 | ||
|
Ну если на С++. double Sum(short a, const int b) - функция. double - тип возвращаемого значения. (short, const int) - аргументы. double(short, const int) - тип функции. Sum, a, b - переменные (в первой храниться функция заданного выше типа, в остальных аргументы). Вместо одной функции можно безболезненно подставить другую функцию такого же типа.
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||||||||||||||||||||||
| 19.08.2015, 14:24 | ||||||||||||||||||||||
|
1) Ты пишешь функцию:
int - это тип возвращаемого значения функции string - тип аргумента функции. Здесь понятно? 2) Теперь переходим к типу функции. Вот есть запись:
Т.е. задав функцию, ты сразу же задаешь и ее тип, как head-n-shoulders, в одном флаконе. Явно тип функции записывается так (задается псевдоним типа через typedef):
_____ Еще раз для закрепления: объявление функции неявно в себе содержит тип этой функции.
0
|
||||||||||||||||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||||||||
| 19.08.2015, 14:24 | |||||||||||||||
|
итого: везде указатели. ессна, это будет работать.
0
|
|||||||||||||||
|
|
||||||||||||||||
| 19.08.2015, 14:54 | ||||||||||||||||
|
hoggy, опять лукавите. Ни один даже стандартный тип не кастует указатель на себя в ссылку:
Однако:
0
|
||||||||||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||
| 19.08.2015, 19:00 | ||||
|
а из этого проистекает, что функция и указатель на функцию - это не одно и тоже. зато любой кастует себя к ссылке на себя. что и иллюстрируют мои примеры выше.
0
|
||||
|
166 / 90 / 38
Регистрация: 29.06.2015
Сообщений: 1,100
|
||||
| 20.08.2015, 06:49 [ТС] | ||||
|
А какой это тип данных Int64(AnsiString)? Int64 - целочисленный AnsiString - строковый Int64(AnsiString)?
0
|
||||
|
196 / 197 / 120
Регистрация: 27.05.2011
Сообщений: 545
|
|
| 20.08.2015, 07:26 | |
|
0
|
|
|
166 / 90 / 38
Регистрация: 29.06.2015
Сообщений: 1,100
|
||
| 20.08.2015, 09:04 [ТС] | ||
|
И какая цель этого типа? Проще говоря зачем этот "параметр" нужен функции? О чем он говорит? int a; //Выделяем память размером 4 байт. Int64(AnsiString) - ? Функция это набор команд, фрагмент программного кода. Зачем фрагменту кода тип?
0
|
||
|
196 / 197 / 120
Регистрация: 27.05.2011
Сообщений: 545
|
|||
| 20.08.2015, 10:23 | |||
|
В C++ у каждого объекта есть тип. В том числе и у функций. Тип нужен для того, чтобы понять, как можно использовать объект. Тип существует только лишь в сознании программиста и в компиляторе. В самом скомпилированном коде как такового типа никакого нет.
Но, по-большому счёту, тип данных определяет только лишь операции, которые к нему применимы. К числам применимы одни операции, к функциям другие. Типы и занимаемая память не связаны непосредственно. Вообще, тип — это просто некая абстракция. Если бы вы хотели просто выделить память, то, возможно, лучший способ сделать это — написать char a[4];
0
|
|||
|
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
|
||||
| 20.08.2015, 11:23 | ||||
|
Вообще это нужно для того чтобы сначала объявить тип функции, а потом по ситуации подставить одну из.
0
|
||||
|
166 / 90 / 38
Регистрация: 29.06.2015
Сообщений: 1,100
|
||
| 20.08.2015, 12:05 [ТС] | ||
|
Из всего выше прочитанного у меня сложилось впечатление, что тип функции - "несуществующая" абстракция.
Мы его нигде не задаем и нигде не используем. Он получается из типа аргумента и типа возвращаемого значения. "Побочный продукт." Нам он не нужен. Более того, мы не можем описать его подобно основным типам с++ (категория, размер типа) в силу бесконечности вариантов. А вот тип аргумента и тип возвращаемого значения - мы задаем. Мы не можем его преобразовать, наподобие inttostr(my_int). Мы ничего не можем с ним сделать. Делать что либо мы можем только с типом аргумента и возвращаемого значения. И это, возможно, повлияет на тип функции. Ситуация очень похожа на известную поговорку - ветер дует, потому что деревья качаются или деревья качаются т.к. ветер дует... Все вышеописанное ИМХО т.к. во всех учебниках есть функциональный тип.
0
|
||
|
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
|
||||||||||||
| 20.08.2015, 12:22 | ||||||||||||
0
|
||||||||||||
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|||||
| 20.08.2015, 12:58 | |||||
|
Несколько человек привели примеры где функциональный тип используется. Вот пример использования из стандартной библиотеке: qsort
0
|
|||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 20.08.2015, 14:29 | |
|
0
|
|
| 20.08.2015, 14:48 | |
|
Любые типы - "несуществующие абстракции". В Ассемблере никаких типов нет, только биты и несколько операций с ними. Так что никакие типы вообще не нужны
![]() ЗЫ я тоже когда столкнулся с функциональными языками и типизированным лямбда-исчислением, долго в себя приходил Сейчас читаю TAPL и не могу сказать, что легко идет.
0
|
|
| 20.08.2015, 14:48 | |
|
Преобразовать массив с типом char в массив с типом int Передача значения с типом DateTime в метод В чем смысл создания шаблона с заранее известным передаваемым типом Нужно перевести переменную с типом данных string в переменную с типом данных REAL Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики
1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
|
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928
Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
|
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего
Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
|
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы
Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
|
|
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока
Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
|
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
|
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат»
Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
|
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
|