Использование массива указателей на функции - 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;
}

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

  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
Похожие ответы