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

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

Войти
Регистрация
Восстановить пароль
 
bearwoolfs
15 / 15 / 1
Регистрация: 10.01.2011
Сообщений: 275
#1

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

09.06.2011, 10:36. Просмотров 360. Ответов 7
Метки нет (Все метки)

При узачение Функции зашел в тупик. Прошу помочь разобраться . Вопрос ниже...
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;
}
 Комментарий модератора 
Вы что, поиздеваться решили? Вам что, русским языком не говорили, что на форуме есть ман по тегам. Что, вам не лень народ своими вопросами грузить, но лень погулять по форуму и поискать ман? В конце концов, что, сложно догадаться, что в редакторе сообщений кнопочки над полем ввода текста содержат названия языков программирования, и что это не просто для красоты, а кликабельно?
Короче говоря, впредь перед вашим кодом печатайте [СРР], а после кода [/СРР].
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2011, 10:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Указатель на функцию (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++
Всем привет. Подскажите, пожалуйста, пример не очень сложной программы, в которой встречается указатель на функцию, принимающую параметр...

7
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
09.06.2011, 10:42 #2
Цитата Сообщение от bearwoolfs Посмотреть сообщение
int A(int,int);// инициалезированна функция А
нельзя внутри дургой функции, а main - функция.

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

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

bearwoolfs, A(i,j);

Цитата Сообщение от bearwoolfs Посмотреть сообщение
int A(int,int);// инициалезированна функция А
удали нафиг эту строчку
1
bearwoolfs
15 / 15 / 1
Регистрация: 10.01.2011
Сообщений: 275
09.06.2011, 10:50  [ТС] #4
Понятно , но ничего не понятно , тогда для чего используеться Указатель на функцию ??? Если он туда ничего передать не может. Яправильно понял?
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
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);
}
нельзя, так как на этих языках нельзя помещать тело и/или прототип функции внутри другой функции.
1
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
09.06.2011, 10:53 #6
taras atavin, http://codepad.org/jsT8nX1L
Да определение нельзя писать, но объявление можно
bearwoolfs, указатели на функции находят широкое применение в качестве параметров других функций
1
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
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;
1
bearwoolfs
15 / 15 / 1
Регистрация: 10.01.2011
Сообщений: 275
09.06.2011, 12:15  [ТС] #8
Огромное спасибо все теперь стало ясно.
0
09.06.2011, 12:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2011, 12:15
Привет! Вот еще темы с ответами:

Работа с файлом (передать указатель на файл в функцию, вернуть указатель на файл из функции) - 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++
Привет! Вопрос такой: Если я пишу сортировку, например, bubbleSort и хочу помимо массива и его размера передать ещё и указатель на функцию,...


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

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

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