Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

24.12.2012, 17:23. Просмотров 283. Ответов 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;
}
Можно ли добиться такого эффекта?
Я понимаю, это полнейший абсурд)) Но любопытство берет вверх)
Спасибо за ответы)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2012, 17:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Указатель на функцию (C++):

Как сделать функцию, возвращающую указатель на функцию (которая в свою очередь возвращает указатель на массив) - C++
Изучаю c++ по одной книжке.Она говорить не умеет.. Так вот понадобилось написать функцию,которая как параметр получает указатель на...

В функцию-метод передать указатель на другую функцию-метод и вызвать через переданный указатель - C++
Друзья! Всем привет. Вот код: class otets { public: void f (void (otets::*p)()); private: void echo_f (){}; ...

Функция, получающая указатель на обычную функцию, получает указатель на метод класса - C++
Здравтсвуйте. Имеется вопрос по указателям на методы класса. Допустим, есть функция( f ), которая принимает указатель на функцию и...

Передача умного указателя в функцию принимающую указатель на указатель - C++
Итак имеется функция со следующим параметром: HRESULT __stdcall Function(SomeClass **param); В случае, когда создаём обычный...

Передать в неуправляемую функцию указатель на указатель - C++
Неуправляемая функция типа FUNC(int ** r); Делаю так fixed (int* ptr = arr) { FUNC((int **)ptr); ...

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

3
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
24.12.2012, 17:34 #2
f на плюсах у тебя - двойной указатель, ему можно присвоить только адрес указателя, но имя функции обозначает адрес, то есть значение указательного типа, а не сам указатель, значения адресов не имеют.

Добавлено через 2 минуты
Цитата Сообщение от Eugine Посмотреть сообщение
Вообще интересует динамическое выделение памяти под функцию,
Функция должна уже быть в программе на момент окончания компиляции, сама прога её не скомпилит. О каком же динамическом выделении может быть речь? Подо что? Функция то уже слинкована статически. Есть динамическое связывание, но это загрузка внешнего библиотечного файла, этим занимается система.
1
Eugine
3 / 3 / 0
Регистрация: 10.11.2012
Сообщений: 63
24.12.2012, 18:09  [ТС] #3
Спасибо за ответ)
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
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;
.
0
25.12.2012, 12:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2012, 12:16
Привет! Вот еще темы с ответами:

Работа с файлом (передать указатель на файл в функцию, вернуть указатель на файл из функции) - C++
Подскажите как передать указатель на файл в функцию, как вернуть указатель на файл из функции. void Open() // из этой функции вернуть...

Как передать параметр типа "указатель на указатель" в функцию? - C++
#include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;iostream&gt; using namespace std; #include &lt;iomanip&gt; using std::setiosflags; ...

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

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


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

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

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