Использование массива указателей на функции - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Подскажите, пожалуйста, что я делаю не так. Это компилируется, но не выводит функцию func1.
Листинг программы
  1. void func1(void);
  2. void func2(void);
  3. void func3(void);
  4. void func4(void);
  5. int main(void) {
  6. void (*funcArr[5])(void);
  7. funcArr[0] = func1;
  8. funcArr[1] = func2;
  9. funcArr[2] = func3;
  10. funcArr[3] = func4;
  11. (*funcArr[0])();
  12. return 0;
  13. }
  14. void func1()
  15. {
  16. printf("1");
  17. }
  18. void func2()
  19. {
  20. printf("2");
  21. }
  22. void func3()
  23. {
  24. printf("3");
  25. }
  26. void func4()
  27. {
  28. printf("4");
  29. }

Решение задачи: «Использование массива указателей на функции»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. void func1(void) {
  4.     printf("1\n");
  5. }
  6.  
  7. void func2(void) {
  8.     printf("2\n");
  9. }
  10.  
  11. void func3(void) {
  12.     printf("3\n");
  13. }
  14.  
  15. typedef void (*func_t)(void);
  16.  
  17. int main(void) {
  18.     func_t funcs[] = { func1, func2, func3, NULL };
  19.     int i;
  20.    
  21.     for ( i = 0; funcs[i]; ++i )
  22.         funcs[i]();
  23.    
  24.     return 0;
  25. }

Объяснение кода листинга программы

  1. Подключение стандартной библиотеки.
  2. Объявление трех функций: func1, func2, func3.
  3. Объявление типа данных func_t, который является указателем на функцию.
  4. Инициализация массива funcs массивом из трех функций и завершающим NULL.
  5. Объявление переменной i для использования в цикле.
  6. Запуск цикла по массиву funcs, пока не встретится NULL.
  7. Вызов функции по адресу, содержащемуся в массиве funcs, с передачей пустого списка аргументов ().
  8. Возврат значения 0 из функции main, что означает успешный конец работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.636 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы