Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Eugine
 Аватар для Eugine
3 / 3 / 0
Регистрация: 10.11.2012
Сообщений: 63
#1

Указатель на функцию - C++

24.12.2012, 17:23. Просмотров 261. Ответов 3
Метки нет (Все метки)

Всем доброго времени суток.

Вот обычный указатель на функцию. Код прекрасно работает. (Код на С)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
typedef int (*func)(int, int);
int g(int a, int b);
int main()
{
    func f = g;
    int c = f(4,4);
    printf("%d\n", c);
    return 0;
}
int g(int a, int b)
{
    return a * b;
}
Возник такой вопрос: можно ли сделать что-то похожее на такое?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
typedef int (*func)(int, int);
int g(int a, int b);
int main()
{
    func* f = &g;
    int c = (*f)(4,4);
    printf("%d\n", c);
    return 0;
}
int g(int a, int b)
{
    return a * b;
}
Код разумеется не рабочий) Вопрос в том можно ли как то достичь такого эффекта.
Вообще интересует динамическое выделение памяти под функцию, т.е. вот такой пример !нерабочего кода!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
typedef int (*func)(int, int);
int g(int a, int b);
int main()
{
    func* f = (func*)malloc(sizeof(g));
        f = &g;
    int c = (*f)(4,4);
    printf("%d\n", c);
    free(f);
    return 0;
}
int g(int a, int b)
{
    return a * b;
}
Можно ли добиться такого эффекта?
Я понимаю, это полнейший абсурд)) Но любопытство берет вверх)
Спасибо за ответы)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2012, 17:23     Указатель на функцию
Посмотрите здесь:

Указатель на функцию C++
C++ Указатель на функцию
Указатель на функцию C++
Указатель на функцию C++
Указатель на функцию C++
C++ Указатель на функцию
C++ Указатель на функцию, С++
Указатель на функцию C++
Указатель на функцию C++
C++ Указатель в функцию
C++ Указатель на функцию
C++ Указатель на функцию

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
24.12.2012, 17:34     Указатель на функцию #2
f на плюсах у тебя - двойной указатель, ему можно присвоить только адрес указателя, но имя функции обозначает адрес, то есть значение указательного типа, а не сам указатель, значения адресов не имеют.

Добавлено через 2 минуты
Цитата Сообщение от Eugine Посмотреть сообщение
Вообще интересует динамическое выделение памяти под функцию,
Функция должна уже быть в программе на момент окончания компиляции, сама прога её не скомпилит. О каком же динамическом выделении может быть речь? Подо что? Функция то уже слинкована статически. Есть динамическое связывание, но это загрузка внешнего библиотечного файла, этим занимается система.
Eugine
 Аватар для Eugine
3 / 3 / 0
Регистрация: 10.11.2012
Сообщений: 63
24.12.2012, 18:09  [ТС]     Указатель на функцию #3
Спасибо за ответ)
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.12.2012, 12:16     Указатель на функцию #4
Место для указателей на функции можно выделять динамически, но не для самих функций. Попробуй
C++
1
2
func* f = (func*)malloc(sizeof(func));
*f=g;
и
C++
1
2
func* f = new func;
*f=g;
.
Yandex
Объявления
25.12.2012, 12:16     Указатель на функцию
Ответ Создать тему
Опции темы

Текущее время: 14:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru