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

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

Восстановить пароль Регистрация
 
bearwoolfs
 Аватар для bearwoolfs
15 / 15 / 2
Регистрация: 10.01.2011
Сообщений: 275
09.06.2011, 10:36     Указатель на функцию #1
При узачение Функции зашел в тупик. Прошу помочь разобраться . Вопрос ниже...
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 <iostream>
using namespace std;
 
 
 
void A(int &, int &);
    int main()
{
    int(*aFunc)(int , int);// создан указатель 
    int A(int,int);// инициалезированна функция А
    aFunc=A;// Указателю присвоенно значение функции
    // Вопрос: Как вызвать функцию что-бы она дала доступ к своим членам? Воспользоваться оператором Cin>> , 
    // а потом и вывести функцию для просмотра ?
    return 0;
}
 
void A (int &a, int &b)
{
    int i;
    int j;
    cin>>i;
    cin>>j;
    a=i;
    b=j;
}
 Комментарий модератора 
Вы что, поиздеваться решили? Вам что, русским языком не говорили, что на форуме есть ман по тегам. Что, вам не лень народ своими вопросами грузить, но лень погулять по форуму и поискать ман? В конце концов, что, сложно догадаться, что в редакторе сообщений кнопочки над полем ввода текста содержат названия языков программирования, и что это не просто для красоты, а кликабельно?
Короче говоря, впредь перед вашим кодом печатайте [СРР], а после кода [/СРР].
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2011, 10:36     Указатель на функцию
Посмотрите здесь:

Указатель на указатель на функцию C++
Как передать указатель на функцию в функцию C++
C++ В функцию-метод передать указатель на другую функцию-метод и вызвать через переданный указатель
Зачем передавать в функцию X указатель на callback функцию, если последняя ВНЕШНЯЯ и вызовется БЕЗО ВСЯКОГО УКАЗАТЕЛЯ? C++
Работа с файлом (передать указатель на файл в функцию, вернуть указатель на файл из функции) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
09.06.2011, 10:42     Указатель на функцию #2
Цитата Сообщение от bearwoolfs Посмотреть сообщение
int A(int,int);// инициалезированна функция А
нельзя внутри дургой функции, а main - функция.

Добавлено через 48 секунд
Цитата Сообщение от bearwoolfs Посмотреть сообщение
Как вызвать функцию что-бы она дала доступ к своим членам
Функция - не класс и не стурктура и членов не имеет.

Добавлено через 3 минуты
Цитата Сообщение от bearwoolfs Посмотреть сообщение
Воспользоваться оператором Cin>>, // а потом и вывести функцию для просмотра ?
Функции нельзя вводить и выводить. Даже если ты пишешь транслятор, позволяющий разрабатывать новые функции, то для него то они - текст, а в рантайме самой разработанной проги нельзя рабоать с её же исходником, доступ к которому был на стадии разработки, а не исполнения самой проги и исполнения транслятора, а не прилады.
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
09.06.2011, 10:46     Указатель на функцию #3
Цитата Сообщение от taras atavin Посмотреть сообщение
нельзя внутри дургой функции, а main - функция.
можно...

bearwoolfs, A(i,j);

Цитата Сообщение от bearwoolfs Посмотреть сообщение
int A(int,int);// инициалезированна функция А
удали нафиг эту строчку
bearwoolfs
 Аватар для bearwoolfs
15 / 15 / 2
Регистрация: 10.01.2011
Сообщений: 275
09.06.2011, 10:50  [ТС]     Указатель на функцию #4
Понятно , но ничего не понятно , тогда для чего используеться Указатель на функцию ??? Если он туда ничего передать не может. Яправильно понял?
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
09.06.2011, 10:50     Указатель на функцию #5
На паскале можно писать
Pascal
1
2
3
4
5
6
7
funtion f1(i:integer):integer;
function f2(i:integer):integer;
begin
       f2:=i*2;
end;
     f1:=f2(i)*f2(i mod 4);
end;
, а на c/c++
C++
1
2
3
4
5
6
7
8
int f1(int i)
{
 int f2(int i)
 {
  return i*2;
 }
 return f1(i)*f1(i %4);
}
нельзя, так как на этих языках нельзя помещать тело и/или прототип функции внутри другой функции.
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
09.06.2011, 10:53     Указатель на функцию #6
taras atavin, http://codepad.org/jsT8nX1L
Да определение нельзя писать, но объявление можно
bearwoolfs, указатели на функции находят широкое применение в качестве параметров других функций
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
09.06.2011, 11:12     Указатель на функцию #7
Цитата Сообщение от bearwoolfs Посмотреть сообщение
Понятно , но ничего не понятно , тогда для чего используеться Указатель на функцию ??? Если он туда ничего передать не может. Яправильно понял?
Нельзя ввести с клавиатуры, но это ещё ничего не значит. Вот представь себе: у тебя 1000 функций, в 1000 местах ты в зависимости от каких то условий хочешь вызывать эти функции по одной, а в других частях программы запоминать, что именно потом вызовешь. Тебе понадобаится 1000 swichей по 1000 caseов, итого миллион caseов. А с помощью указаетеля можно обойтись всего лишь тысячью строк вида
C++
1
PointToFucntion(x, y);
, где PointToFucntion - твой указатель. Теперь представь: ты потом передумал и функций стало 2000. В первом случае ты добавишь ещё миллион caseов, а во втором добавляются только сами функции и запоминание того, какую из них действительно надо вызывать, сам же вызов не трогаешь вовсе, что в равной мерее удобно и при замене тысячи функций на две тысячи, вызываемых в тысяче мест, и при замене двух функций на три, вызываемых в одном месте.

Добавлено через 5 минут
Цитата Сообщение от OstapBender Посмотреть сообщение
указатели на функции находят широкое применение в качестве параметров других функций
Можно передавать имена, а внутри писать длинные последовательности альтернатив, или передавать номера, а внутри писать длинные switchи. Указатель же на функцию оказывается удобнее этих решений в том случае, если вызов повторяется в разных частях программы, и/или переделывается.

Добавлено через 2 минуты
Цитата Сообщение от taras atavin Посмотреть сообщение
Pascal
1
2
3
4
5
6
7
funtion f1(i:integer):integer;
function f2(i:integer):integer;
begin
 f2:=i*2;
end;
 f1:=f2(i)*f2(i mod 4);
end;
Очепятки.
Pascal
1
2
3
4
5
6
7
8
funсtion f1(i:integer):integer;
function f2(i:integer):integer;
begin
       f2:=i*2;
end;
begin
     f1:=f2(i)*f2(i mod 4);
end;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2011, 12:15     Указатель на функцию
Еще ссылки по теме:

Передать в неуправляемую функцию указатель на указатель C++
Функция, получающая указатель на обычную функцию, получает указатель на метод класса C++
C++ Как сделать функцию, возвращающую указатель на функцию (которая в свою очередь возвращает указатель на массив)

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

Или воспользуйтесь поиском по форуму:
bearwoolfs
 Аватар для bearwoolfs
15 / 15 / 2
Регистрация: 10.01.2011
Сообщений: 275
09.06.2011, 12:15  [ТС]     Указатель на функцию #8
Огромное спасибо все теперь стало ясно.
Yandex
Объявления
09.06.2011, 12:15     Указатель на функцию
Ответ Создать тему
Опции темы

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