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

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

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

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

24.12.2012, 17:23. Просмотров 273. Ответов 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++
Неуправляемая функция типа FUNC(int ** r); Делаю так fixed (int* ptr = arr) { FUNC((int **)ptr); ...

Зачем передавать в функцию X указатель на callback функцию, если последняя ВНЕШНЯЯ и вызовется БЕЗО ВСЯКОГО УКАЗАТЕЛЯ? - C++
Собсно. То есть ребята, вот пример отсюда: http://www.cplusplus.com/reference/algorithm/count_if/ // count_if example #include...

Указатель на функцию - C++
Столкнулся с проблемой передачи функции в функцию как переменной. Не могли бы вы объяснить мне эту тему? Компилятор ругается даже на: ...

Указатель на функцию - C++
Всем привет! Компилятор выдает ошибку при использовании указателя на функцию. Задача такая FileName.h ...

указатель на функцию - C++
есть одна функция которая принимает указатель на функцию. я пытаюсь так сказать применить механиз MVC и все скрывать в классах, но как...

Указатель на функцию - C++
float ( *f)(float, float); float rosenbrock(float x1, float x2) { return 100*pow((x2-x1*x1),2)+pow((1-x1),2); } ...

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

Добавлено через 2 минуты
Цитата Сообщение от Eugine Посмотреть сообщение
Вообще интересует динамическое выделение памяти под функцию,
Функция должна уже быть в программе на момент окончания компиляции, сама прога её не скомпилит. О каком же динамическом выделении может быть речь? Подо что? Функция то уже слинкована статически. Есть динамическое связывание, но это загрузка внешнего библиотечного файла, этим занимается система.
Eugine
3 / 3 / 0
Регистрация: 10.11.2012
Сообщений: 63
24.12.2012, 18:09  [ТС]     Указатель на функцию #3
Спасибо за ответ)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2012, 12:16     Указатель на функцию
Еще ссылки по теме:

указатель на функцию - C++
ребят помогите, плиз, ошибку выдает( Дано: матрицы А и B. Составить программу, использующую для управления меню, пунктам которого...

Указатель на функцию - C++
Проверял, что быстрее работает и столкнулся с дилеммой - по идее, ссылаться на функцию через указатель быстрей, чем просто вызывать ее, но...

Указатель на функцию - C++
Мир вашей хате! Подскажите пожалуйста в такой проблеме... В одном классе (MyClass1) есть переменная указатель на функцию (без...

Указатель на функцию - C++
С минимальным синтаксисом вроде как понятно.... А вот где пользоваться таким можно и что это дает... Вроде как ускоряет работу с...


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

Или воспользуйтесь поиском по форуму:
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     Указатель на функцию
Ответ Создать тему
Опции темы

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