Использование массива указателей на функции - C (СИ)
Формулировка задачи:
Подскажите, пожалуйста, что я делаю не так. Это компилируется, но не выводит функцию func1.
void func1(void); void func2(void); void func3(void); void func4(void); int main(void) { void (*funcArr[5])(void); funcArr[0] = func1; funcArr[1] = func2; funcArr[2] = func3; funcArr[3] = func4; (*funcArr[0])(); return 0; } void func1() { printf("1"); } void func2() { printf("2"); } void func3() { printf("3"); } void func4() { printf("4"); }
Решение задачи: «Использование массива указателей на функции»
textual
Листинг программы
#include <stdio.h> void func1(void) { printf("1\n"); } void func2(void) { printf("2\n"); } void func3(void) { printf("3\n"); } typedef void (*func_t)(void); int main(void) { func_t funcs[] = { func1, func2, func3, NULL }; int i; for ( i = 0; funcs[i]; ++i ) funcs[i](); return 0; }
Объяснение кода листинга программы
- Подключение стандартной библиотеки.
- Объявление трех функций: func1, func2, func3.
- Объявление типа данных func_t, который является указателем на функцию.
- Инициализация массива funcs массивом из трех функций и завершающим NULL.
- Объявление переменной i для использования в цикле.
- Запуск цикла по массиву funcs, пока не встретится NULL.
- Вызов функции по адресу, содержащемуся в массиве funcs, с передачей пустого списка аргументов ().
- Возврат значения 0 из функции main, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д