ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
3 июля
91425 Топик полностью
Vit (11.06.2007 20:34, просмотров: 1) ответил Baser на Проконсультируйте по Си, pls!
Это указатель на функцию Объявляется переменная (указатель) void (*funcptr)(void); затем можно присвоить значение адреса функции, funcptr = &MyFun; либо непосредственно адрес с приведением типа к указателю на функцию. funcptr = (void(*)())0x0000 ; Аналогично всё в одном флаконе - объявление переменной типа указатель на функцию с явной инициализацией void (*funcptr)( void ) = (void(*)())0x0000 ; // Set up function pointer to RESET vector В случае, если функция не void, могут быть иные варианты, например, int (*SendPacket_F)( HANDLE SPort, HANDLE Pr_ID, BYTE * buf, WORD len ); тогда адрес функции такого же типа с таким же набором параметров можно присвоить просто записав SendPacket_F = &MB_RTU_SendPacket; Такие указатели кроме бутлодырей удобно пользовать в структурах, например, описывающих работу с меню, но пользоваться ими на С нужно аккуратно, потому как неинициализированные значения по умолчанию инициализируются в NULL и использование таковых может привести к удивительным результатам;)))