1 / 1 / 1
Регистрация: 23.10.2009
Сообщений: 17
1

Использование массива указателей на функции

23.10.2015, 00:54. Показов 1017. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите, пожалуйста, что я делаю не так. Это компилируется, но не выводит функцию func1.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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");
 
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.10.2015, 00:54
Ответы с готовыми решениями:

Использование указателей для доступа к элементам массива
Помогите пожалуйста написать программу с подробным обьяснением:. Использование указателей для...

Использование указателей на функции
Составить одну из двух задач с использованием указателя на функцию 1. Составить функцию...

Использование указателей для передачи параметров функции
Ели мы объявляем формальный параметр как указатель,тогда ведь нам при вызове этой функций следует...

Использование указателей на функции-члены внутри самого класса
День добрый форум! Возник такой вопрос. В классе А есть 3 функции и массив, в котором хранятся...

4
Эксперт .NET
5876 / 4753 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
23.10.2015, 01:19 2
KOsTTTT,
По коду ошибок нет. По логике тоже.
Что программа выводит?

Добавлено через 12 минут
может просто паузу между 15-й и 16-й строками предусмотреть?
C
1
getch();
нужно подключить при этом conio.h
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12697 / 7529 / 1760
Регистрация: 25.07.2009
Сообщений: 13,854
23.10.2015, 01:31 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#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
1 / 1 / 1
Регистрация: 23.10.2009
Сообщений: 17
23.10.2015, 04:16  [ТС] 4
Когда пытается что-то вывести, то происходит ошибка. Если компилировать используя linux-gnu

Добавлено через 23 минуты
Возможно проблема в чем-то другом, просто когда не использую массив указателей, то всё работает.


easybudda, в вашем примере, как я могу получить адрес функции?

C
1
func_t MY_func = funcs[0];
Так?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12697 / 7529 / 1760
Регистрация: 25.07.2009
Сообщений: 13,854
25.10.2015, 19:54 5
Цитата Сообщение от KOsTTTT Посмотреть сообщение
Так?
да.
C
1
2
3
4
    for ( i = 0; funcs[i]; ++i ) {
        func_t f = funcs[i];
        f();
    }
в примере выше, как вариант.
0
25.10.2015, 19:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.10.2015, 19:54
Помогаю со студенческими работами здесь

Использование умных указателей для массива символов
В проекте много похожего кода, но delete не использую, потому как в рандомный момент вылазят...

Возвращение из функции массива указателей
Здравствуйте. Мне нужно вернуть из функции массив указателей. Внутри функции создаю динамический...

Вызов функции массива указателей
Добрый вечер, изучая с++ наткнулся на код: #include &lt;cstdio&gt; #include &lt;cstdlib&gt; #include...

Ошибка в инициализации массива указателей на функции
Как правильно инициализировать массив указателей на функции? Компилятор указывает ошибку в этой...

Работа с двумерными числовыми массивами. Использование указателей. Использование функций пользователя.
Помогите пожалуйста!!!!!!! Сделать три варианта: первый вариант – передача данных между...

Вызов функции с передачей указателей на два массива
Всем привет, помогите найти ошибку. Суть, из функции main() вызывается функция int test(char* v,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru