Можно ли вызвать функции с помощью указателя функций? если да, то как?Функции в C
2
A
ответ
2
Да, вы можете.
13
Да. Тривиальный пример:
// Functions that will be executed via pointer.
int add(int i, int j) { return i+j; }
int subtract(int i, int j) {return i-j; }
// Enum selects one of the functions
typedef enum {
ADD,
SUBTRACT
} OP;
// Calculate the sum or difference of two ints.
int math(int i, int j, OP op)
{
int (*func)(int i, int j); // Function pointer.
// Set the function pointer based on the specified operation.
switch (op)
{
case ADD: func = add; break;
case SUBTRACT: func = subtract; break;
default:
// Handle error
}
return (*func)(i, j); // Call the selected function.
}
1
Да. Пример:
Перед кодом ...
typedef int (_stdcall *FilterTypeTranslatorType) ( int TypeOfImportRecord, PMAType *PMA ); FilterTypeTranslatorType FilterTypeTranslator = {NULL};
Теперь в коде ...
PMAType *PMA; HANDLE hFilterDll; // assume DLL loaded // Now find the address... ... FilterTypeTranslator[TheGroup] = (FilterTypeTranslatorType) GetProcAddress(hFilterDll, "FilterTypeTranslator"); ... // now call it FilterTypeTranslator(1,PMA); ...
4
Да. Вот примеры: good tutorial.
Согласен +1. Пожалуйста, жаль, что все было так просто. – TheSoftwareJedi 2008-10-31 04:14:56
int (* a) (int q) { return q + 1; } действительно ли это определение работает? – 2008-10-31 05:19:38