Цитата(Solodov @ 27.3.2006, 14:22 ) | | если мы знаем адрес памяти где лежит прога, то что это нам дает? |
Цитата(Solodov @ 27.3.2006, 14:43 ) | | а можно пример, как это происходит? |
Указатель на функцию - это просто адрес точки входа в эту функцию. Вот пример:
| Код | #include <iostream>
typedef int (*PF)(char); // PF - тип указатель на функцию принимающую в качестве аргумента char //и возвращающую int
int func1(char c) { std::cout << c << '\n'; return 0; }
void func2(float f) { std::cout << f << '\n'; }
int main() { PF pf = &func1; //запоминаем адрес функции PF pf2 = func1; //можно и без знака & int (*pf3)(char) = func1; // можно и без typedef'a // PF pf4 = func2; - ошибка, у func2 другая сигнатура (*pf)('A'); //вызываем функцию func1 косвенно по указателю pf2('B'); //можно и без разыменования pf3('C'); return 0; }
|
|