0 / 0 / 0
Регистрация: 03.12.2019
Сообщений: 10
1

Одна строчка кода

03.12.2019, 18:14. Показов 2010. Ответов 9

Author24 — интернет-сервис помощи студентам
Привет всем, подскажите, что делает строка:
typedef double (*uf)(double, double, int &);
Теория по отдельности мной понимается так:
typedef — пользовательское имя существующему типу данных
double — тип возвращаемого значения функцией
Так как (*..) перед списком передаваемых параметров в функцию, то это указатель на функцию
И, самое сводящее с ума — там ';' после скобок, то есть это — прототип
И тут мозг сломался, что передо мной
Заранее спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.12.2019, 18:14
Ответы с готовыми решениями:

Одна строчка кода, Pascal на C++
Буду рад тому, кто переведет мне эту строчку из Pascal на С++ : ) if (i<>j)and (b=b) then f:=1;

Непонятная строчка кода
for (p = 0; p < 12; p++) { for (v = 0; v < 50; v++) { if (x == y) { if (v >=...

Что означает данная строчка кода?
#define MASSIZE(x) (sizeof(x)/sizeof(x)) можете пожалуйста объяснить что это значит?

понять, что делает строчка кода на c++
В общем, не понимаю, что происходит в указанной строке. Массив cz типа complex в каждом своем члене...

9
Мозгоправ
1744 / 1038 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
03.12.2019, 18:28 2
Zabral0, всё правильно расшифровали. uf - это указатель на функцию, принимающую три параметра указанных типов. Точка с запятой просто завершает typedef.
1
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
03.12.2019, 18:33 3
Цитата Сообщение от Zabral0 Посмотреть сообщение
И, самое сводящее с ума — там ';' после скобок, то есть это — прототип
И тут мозг сломался, что передо мной
пред тобой
Цитата Сообщение от Zabral0 Посмотреть сообщение
пользовательское имя существующему типу данных
который представляет собой
Цитата Сообщение от Zabral0 Посмотреть сообщение
указатель на функцию
которая
Цитата Сообщение от Zabral0 Посмотреть сообщение
double — тип возвращаемого значения
а точка с запятой - ну так конец выражения просто.
в с++ точка с запятой означает конец выражения.
0
Эксперт CЭксперт С++
5113 / 4552 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
03.12.2019, 18:35 4
Zabral0, пример навскидку:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
typedef double (*uf)(double, double, int &);
 
double f(double x, double y, int &i)
{
    return (x + y) / i;
}
 
double g(uf f, double x, double y, int &i)
{
    return f(x, y, i);
}
 
int main()
{
    double  x = 1.;
    double  y = 2.;
    int     i = 2;
    double a = g(f, x, y, i);
}
0
0 / 0 / 0
Регистрация: 03.12.2019
Сообщений: 10
03.12.2019, 18:46  [ТС] 5
liv, поясните пожалуйста. В Вашем примере функция g передает параметры в функцию f как раз по адресу, содержащемуся в созданном в 1-й строке указателе? Если это так, то я совсем не понимаю смысл typedef...
0
Эксперт CЭксперт С++
5113 / 4552 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
03.12.2019, 18:49 6
смысл typedef указать компилятору, какие параметры у функции, и что она возвращает.
Иначе он не поймет, что делать в следующем. Ведь можно записать и так:
C++
1
2
3
4
double g(uf fun, double x, double y, int &i)
{
    return fun(x, y, i);
}
0
0 / 0 / 0
Регистрация: 03.12.2019
Сообщений: 10
03.12.2019, 18:53  [ТС] 7
liv, благодарю, кажется немного понял
0
Мозгоправ
1744 / 1038 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
03.12.2019, 19:37 8
Zabral0, пример liv без typedef
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
double f(double x, double y, int &i)
{
    return (x + y) / i;
}
 
double g(double (*f)(double, double, int &), double x, double y, int &i)
{
    return f(x, y, i);
}
 
int main()
{
    double  x = 1.;
    double  y = 2.;
    int     i = 2;
    double a = g(f, x, y, i);
}
1
Эксперт CЭксперт С++
5113 / 4552 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
03.12.2019, 19:38 9
L0M, те же яйца, только сбоку
0
Мозгоправ
1744 / 1038 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
03.12.2019, 19:42 10
Цитата Сообщение от liv Посмотреть сообщение
те же яйца, только сбоку
Именно это я и хотел продемонстрировать
0
03.12.2019, 19:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.12.2019, 19:42
Помогаю со студенческими работами здесь

Что означает эта строчка кода?
Что означает эта строчка кода?head = new Node<T>(data) Код из которого была взята данная строчка:...

Что значит эта строчка кода?
что значит это строчка? st = h.GetStage(i); cout << "Информация о доме:" << endl; for...

Нюансы синтаксиса: что означает строчка кода ui->setupUi(this) ?
Добрый день, объясните, пожалуйста на пальцах эту строчку: ui->setupUi(this) ?

Два файла объединяются по принципу: строчка из одного, строчка из другого(2 задачи)
Всем доброго времени суток! Помогите написать 2 программки. Теоретически (по моему мнению) они...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru