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

Почему функции это тип данного

15.01.2021, 00:03. Показов 6574. Ответов 71
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В задании такой вопрос:
Почему функции это тип данного?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.01.2021, 00:03
Ответы с готовыми решениями:

Почему у функции main() тип int? Почему не может быть какой-то другой, например, char?
Схема, касательно возвращаемого значения понятна. Не понятно почему именно целочисленное. Хелп)

Почему выделенная внутри функции память удаляется после возврата функции? Это можно исправить?
Вот пример функции, которая выделяет память под переменную, объявленную за её пределами: void Foo (wchar_t* test) { test =...

Как сортировать в рекурсивной функции? Это фунция, выводящая файлы из данного каталога и всех его подкаталогов
void listFilesRecursively(char *basePath, int size) { char path; struct dirent *dp; struct file files; struct...

71
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
15.01.2021, 19:36
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от _stanislav Посмотреть сообщение
Нет, функции это НЕ тип данного.
на кокой ответ ты бы ответил Да
0
Just Do It!
 Аватар для XLAT
4221 / 2687 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
15.01.2021, 19:52
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
func1 и func2 - это не функции. Вопрос был про функции.
а вашем случае:
функции это не типы.

термин тип существует исключительно для данных.

Цитата Сообщение от jugu Посмотреть сообщение
Тип данных - это характеристика данных, определяющая их структуру, формат, диапазон значений и набор допустимых операций
абсолютно верно.
типы, как термин был придуман для тех вещей, которыми можно манипулировать,
и вещи эти в контексте ЯПов называются данными.
1
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13239 / 6871 / 1827
Регистрация: 18.10.2014
Сообщений: 17,417
15.01.2021, 19:56
Цитата Сообщение от XLAT Посмотреть сообщение
а вашем случае:
Я вообще не понимаю, что означает набор букв "а вашем случае". Прекратить валить в форум бессвязные обрывки. Потрудитесь формулировать полные предложения, уделяя внимание орфографии и пунктуации.

Цитата Сообщение от XLAT Посмотреть сообщение
функции это не типы.
В С++ функции имеют типы. В С++ типы делятся на объектные (данные), функциональные (функции), ссылки и void.
3
15.01.2021, 19:59

Не по теме:

Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Потрудитесь
ок,
потружусь к вам более не обращаться.

0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
15.01.2021, 20:01
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
В С++ типы делаться на объектные (данные), функциональные и особые.
почему нельзя было просто так ответить в место Нет, функции это НЕ тип данного.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13239 / 6871 / 1827
Регистрация: 18.10.2014
Сообщений: 17,417
15.01.2021, 20:03
Цитата Сообщение от _stanislav Посмотреть сообщение
почему нельзя было просто так ответить в место Нет, функции это НЕ тип данного.
Хотя бы потому, что вопрос нечетко и косноязычно поставлен. Ясно, что ответ "нет" тут уместен, а вот детализировать далее при такой постановке вопроса бесполезно.
0
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
15.01.2021, 20:04
Цитата Сообщение от XLAT Посмотреть сообщение
термин тип существует исключительно для данных.
"Термин" - слово, которое в рамках одной предметной области имеет строго одно значение.
Отсюда закономерный вопрос: это в какой такой области термин "тип" у вас существует исключительно для данных?

Явно это - не с++.
Потому что в с++ тип может характеризовать не только данные.
Например, тип void характеризует пустоту.
1
Just Do It!
 Аватар для XLAT
4221 / 2687 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
15.01.2021, 20:05
Цитата Сообщение от _stanislav Посмотреть сообщение
почему нельзя было просто так ответить в место Нет, функции это НЕ тип данного.
потому что нельзя же написать: функциональные(что?) и особые(что?) данные
1
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
15.01.2021, 20:07
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
детализировать далее при такой постановке вопроса бесполезно
полезно, если ты обладаешь достаточной когнитивной способностью по отношению конечно оппонента.
1
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
15.01.2021, 20:12
Формулируя вопрос, автор, скорее всего, не осознавал, что есть типы ДАННЫХ, а есть более общая категория - виды СУЩНОСТЕЙ. В этом смысле функция не является типом данных, это вид программной сущности.
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
15.01.2021, 20:18
Цитата Сообщение от XLAT Посмотреть сообщение
потому что нельзя же написать: функциональные(что?) и особые(что?) данные
понятно что тут нужно со стандартом (C++) + гражданским кодексом и уголовным спать в обнимку

Добавлено через 4 минуты
Цитата Сообщение от eva2326 Посмотреть сообщение
"Термин" - слово, которое в рамках одной предметной области имеет строго одно значение.
Отсюда закономерный вопрос: это в какой такой области термин "тип" у вас существует исключительно для данных?
ага, тема поднималась много раз, поэтому TheCalligrapher нехотя разговаривал и свалил.
0
Just Do It!
 Аватар для XLAT
4221 / 2687 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
15.01.2021, 20:31
Цитата Сообщение от _stanislav Посмотреть сообщение
ага, тема поднималась много раз, поэтому
это же насколько я поумнел, что снизошёл до таких абстрактных тем ни о чем.
0
 Аватар для Recrut_rf
392 / 337 / 66
Регистрация: 14.10.2014
Сообщений: 1,538
15.01.2021, 20:35
Интересный у вас тут диалог. Тоже хочу поучаствовать.
Из книги "Стандарт С++ перевод, комментарии, примеры" (Е. А. Зуев) пункт 3.9 подраздел 1 Типы Types:

Имеются два вида типов: базовые типы (fundamental types) и составные типы (compound types).
Типы описывают объекты (1.8), ссылки (8.3.2) или функции (8.3.5).



Подробности в соответствующих подразделах. Если нужно, могу опубликовать весь пункт 8.3.5
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
15.01.2021, 20:48
Цитата Сообщение от XLAT Посмотреть сообщение
это же насколько я поумнел, что снизошёл до таких абстрактных тем ни о чем.
она поднималась в разных ракурсах, но стержень мог заметить только тот кто долго в этой теме(типа тебя )

Добавлено через 2 минуты
Recrut_rf, стандарты, как и законы пишут определенное количество людей, и другое количество людей всегда вправе оспорить их.
1
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
15.01.2021, 20:50
Цитата Сообщение от Recrut_rf Посмотреть сообщение
Имеются два вида типов: базовые типы (fundamental types) и составные типы (compound types).
Типы описывают объекты (1.8), ссылки (8.3.2) или функции (8.3.5).
Всё верно. Но это всё не типы данных. Это типы сущностей. А данные - один из видов сущностей. Функции - другой их вид. Поэтому ответ на вопрос автора по-прежнему отрицательный: нет, функции не являются типом данных!
0
 Аватар для Recrut_rf
392 / 337 / 66
Регистрация: 14.10.2014
Сообщений: 1,538
15.01.2021, 21:06
Цитата Сообщение от _stanislav Посмотреть сообщение
другое количество людей всегда вправе оспорить их
Так то да, но все компиляторы пишутся по единым стандартам (конечно у каждого софтверного разработчика могут быть свои "закидоны на тему" но всё же). Поэтому разработчик вправе ожидать от компилятора определённого поведения, которое соответствует общепринятому стандарту языка программирования. Этим языки, используемые для промышленной разработки, отличаются от поделок каких-нибудь энтузиастов.

Добавлено через 7 минут
вот ещё для размышления:

Для любого объекта (который не является подобъектом базового класса)
тривиально-копируемого типа Г, независимо от того, содержит ли этот
объект корректное значение типа 7, составляющие байты (1.7), образующие
объект, могут копироваться в массив из char или unsi gned char42.
Если содержимое этого массива из char или unsigned char копируется
обратно в объект, то этот объект должен в дальнейшем содержать свое
исходное значение.
Пример:

C++
1
2
3
4
5
6
7
8
9
#define N sizeof(T )
char buf[N];
T obj; // obj инициализируется своим исходным значением
std::memcpy(buf, & obj, N);
  // в промежутке между этими двумя вызовами
  // std::memcpy obj может модифицироваться
std::memcpy(&obj, buf, N);
  // в этой точке каждый подобъект obj
  // скалярного типа содержит свое исходное значение
Добавлено через 3 минуты
Ну и почитав про типы в этих разделах, пришёл ещё к одному умозаключению:

К типам данных можно отнести сущности, способные выполнять определённые действия. Например операция копирования к сущностям функция в принципе не применима. А вот указатель на функцию можно скопировать в другой указатель на функцию. Как то так.
0
Just Do It!
 Аватар для XLAT
4221 / 2687 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
15.01.2021, 21:10
Цитата Сообщение от Recrut_rf Посмотреть сообщение
Поэтому разработчик вправе ожидать от компилятора определённого поведения,
хм,
как странно,
я всегда ожидаю от компилятора удара из подтишка под дых,
поэтому всегда проверяю свой код(достигший таких привилегий) на двух или трёх компиляторах от разных контор.

например, такое было:
представьте что новой версии GCC константное значение вдруг можно изменить так, как будто это переменная.
0
 Аватар для Recrut_rf
392 / 337 / 66
Регистрация: 14.10.2014
Сообщений: 1,538
15.01.2021, 21:25
Вообще, тут можно много рассуждать на тему - но как говорил Морфеус из кинотрилогии "Матрица" - выбери красную и я покажу тебе как глубока кроличья нора.
Это я к тому, что функции - данные это или не данные, какой у них тип и другие фундаментальные основы - они ведь в принципе для большинства не так уж и важны, потому как можно программировать и без этого знания всю свою жизнь и даже не заморачиваться подобными вопросами.
Но "понимающий" программист тем и отличается от просто хорошего, что его интересуют подобные вопросы - как там всё устроено, на уровне "фундамента" языка.

Добавлено через 10 минут
Цитата Сообщение от XLAT Посмотреть сообщение
константное значение вдруг можно изменить
const_cast не просто так придумали.

Хотя может я идеализирую все эти стандарты. Но всё равно, когда компилирую код - я более чем уверен, что моя прога стартанёт с функции main, а не откуда либо ещё. А в мелочах, да - там каждый может выпендриваться по-своему.

например в вижуал студии (17) с его MSVC по капотом, такой код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdlib.h>
#include <stdio.h>  
#include <stdint.h>    
#include <conio.h>
#include <string.h>
 
char* WordsToStr(const uint32_t count, char* dest)
{
  const char* w;
  
  switch(count % 100)
  {
    case 11 ... 14: w = "слов"; break;
    
    default: 
      switch (count % 10) 
      {
        case 1:       w = "слово"; break;
        case 2 ... 4: w = "слова"; break;
        default:      w = "слов";
      } 
  }
  
  sprintf(dest, "%u %s", count, w);
  return dest;
}
 
int main(int argc, char** argv) 
{
    system("chcp 65001 & cls");
    char buf[128]; 
    
    for (int idx = 0; idx != 24; idx++)
      printf("%s\n", WordsToStr(idx, buf));
    
    printf("\n >> Нажми что-нибудь для выхода... ");
    getch();
    return 0;
}
Воспринял "в штыки" и отказался компилировать. А Dev C++ 5.11 с TDM-GCC 4.9.2 нормально скомпилировал.
0
15.01.2021, 21:32

Не по теме:

Цитата Сообщение от Recrut_rf Посмотреть сообщение
const_cast не просто так придумали.
я же написал там что: изменить КАК обычную переменную.

ладно, забейте.

0
 Аватар для Recrut_rf
392 / 337 / 66
Регистрация: 14.10.2014
Сообщений: 1,538
15.01.2021, 21:38
Цитата Сообщение от XLAT Посмотреть сообщение
изменить КАК обычную переменную
Они наверное трактуют стандарт по своему , а возможно, это просто баг, который ещё не пофиксили . Хотя....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.01.2021, 21:38

Тип функции int или char, в чем разница и когда это важно?
Ребята привет, не понимаю разницу в типе функции. В данном примере функция digit имеет тип char. Если дать ей тип int, то ничего не...

Почему у функции main() тип возвращаемого значения - int?
Здравствуйте! В языке C# main &quot;свободный&quot;: void main (). Логично, поскольку программа - это набор операторов, которые в общем смысле ничего...

Почему в функции operator не ставят тип возвращаемого значения?
Добрый день! Учу С++ по книге Лафоре. Пример кода ниже. Стало интересно, почему в функции operator есть возвращение значения return. В...

Что это за фишка языка? s+=i[a]; почему это вообще работает? Где про это прочитать?
#include &lt;iostream&gt; using namespace std; int main() { int a={1,2,3,4,5}; int s=0; for(int i=0;i&lt;5;i++) ...

Почему тип входящего параметра функции может отличаться от типа возвращаемого значения?
Зачем здесь указываеться другой тип данных: double &amp;change_it(int i); Весь код: using namespace std; double...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru