Прокомментировать код с typedef - C (СИ)
Формулировка задачи:
всем привет. объясните пожалуйста этот пример. а то до конца не понял...
для меня логически нормальной была бы конструкция наподобие такой:
void* handle = &my_handler;
а тут на что заменяется эта строка?
Handle_type handle = my_handler;
typedef до конца не понял. когда идет просто замена типа то понятно, а когда со скобками, то не понятно... буду рад паре понятных примеров
typedef void (*Handle_type)(int); void my_handler(int); Handle_type handle = my_handler; handle(10); // my_handler(10)
Решение задачи: «Прокомментировать код с typedef»
textual
Листинг программы
#include <stdio.h>
void f (int n)
{
printf("%i\n", n);
}
void g (int n)
{
printf("%i\n", -n);
}
int main ()
{
typedef void (*foo)(int);
foo bar [2] = {f, g};
bar [0](10);
bar [1](10);
return 0;
}
Объяснение кода листинга программы
- #include
Включает стандартную библиотеку ввода/вывода, необходимую для отправки сообщений в консоль - void f (int n) Определяет функцию с именем f, которая принимает целочисленный аргумент n и выводит его на консоль
- void g (int n) Определяет функцию с именем g, которая также принимает целочисленный аргумент n, но выводит его абсолютное значение (то есть без знака)
- int main () Определяет точку входа в программу, с которой начинается выполнение любой программы на C
- *typedef void (foo)(int);** Вводит псевдоним (типизированное имя) для указателя на функцию, которая принимает целочисленный аргумент и не возвращает ничего
- foo bar [2] = {f, g}; Создает массив из двух указателей на функции, которые затем инициализируются указателями на функции f и g
- bar 0; Вызывает функцию, на которую указывает первый элемент массива bar (в данном случае это f), передавая ей аргумент 10
- bar 1; Вызывает функцию, на которую указывает второй элемент массива bar (в данном случае это g), передавая ей аргумент 10
- return 0; Завершает выполнение функции main и, следовательно, всей программы, возвращая 0 (что означает успешный конец работы)