Как правило, мы используем typedef
для получения альтернативных имен для типов данных.
Например -
typedef long int li; // li can be used now in place of long int
Но что делает ниже typedef?
typedef int (*pf) (int, int);
Как правило, мы используем typedef
для получения альтернативных имен для типов данных.
Например -
typedef long int li; // li can be used now in place of long int
Но что делает ниже typedef?
typedef int (*pf) (int, int);
typedef int (*pf) (int, int);
Это означает, что переменные, объявленные с типом pf
, являются указателями на функцию, которая принимает два параметра int
и возвращает int
.
Другими словами, вы можете сделать что-то вроде этого:
#include <stdio.h>
typedef int (*pf)(int,int);
int addUp (int a, int b) { return a + b; }
int main(void) {
pf xyzzy = addUp;
printf ("%d\n", xyzzy (19, 23));
return 0;
}
typedef long int li;
назначает альтернативное имя li
для ввода long int
.
Точно так же
typedef int (*pf) (int, int);
назначает альтернативное имя pf
для ввода int (*) (int, int)
. Это все, что нужно.
Как вы, вероятно, заметили, объявления typedef
следуют тому же синтаксису, что, скажем, объявления переменных. Единственное отличие состоит в том, что новое имя переменной заменяется новым именем типа. Таким образом, в соответствии с синтаксисом объявления C, объявленное имя может появляться "посередине" объявления, когда задействуются массив или типы функций.
В другом примере
typedef int A[10];
объявляет A
в качестве альтернативного имени для типа int [10]
. В этом примере новое имя также появляется "в середине" объявления.
Это прототип указателя функции. Затем вы можете объявить функцию как аргумент примерно так:
void RegisterCallback(pf your_callback_func);
Затем вы можете вызвать функцию, переданную как func ptr:
...
your_callback_func(i, j);
...
typedef
имеет имя pf
, и он предназначен для указателя функции, который принимает два целых числа в качестве аргументов и возвращает целое число.
typedef
работает как:
Определите unknown type
с помощью known types
.
Таким образом, он определяет тип функции, который принимает два аргумента int и возвращает int.