| 10. Можно ли как-то сделать массив функций, чтобы вызывать нужную по индексу? |
|
|
| Автор ARV | |||||||
| 18.12.2009 г. | |||||||
|
Да, конечно, если помнить, что идентификатор функции есть указатель! Правда, указатель этот имеет весьма непростой тип и определяется по следующему шаблону: тип_результата_функции (*имя_указателя) (список_типов_параметров_функции); Например, пусть нужно определить указатель funcptr на функцию с тремя параметрами типа int, возвращающую результат типа char: char (*funcptr) (int,int,int); Теперь можно присвоить этому указателю значение, равное адресу какой-либо подходящей функции: char foo(int x, int y, int z){funcptr = foo; Для создания массива указателей на функции лучше сразу определить тип для соответствующего указателя, а затем уже создать массив из элементов этого типа: typedef char (*funcptr_t)(int,int,int); Важно помнить, что при записи funcptr() произойдет вызов функции, а при записи funcptr будет взят адрес этой функции. Т.е. наличие круглых скобок - обязательный признак обращения к функции. Добавить в любимые (0) | Просмотров: 8742
Только зарегистрированные пользователи могут оставлять коментарии. |
|||||||
| « Пред. | След. » |
|---|
R785211844650
Z210696637574
E368177590409



Коментарии (3)