Загадочная C ++ «вещь» (указатель на функцию) - PullRequest
3 голосов
/ 03 мая 2010

Для чего этот синтаксис в C ++? Может ли кто-нибудь указать мне технический термин, чтобы я мог найти что-нибудь в своем тексте?

Сначала я подумал, что это прототип, но потом = и (*fn) сбросили меня ...

Вот мой пример:

void (*fn) (int&,int&) = x;

Ответы [ 9 ]

14 голосов
/ 03 мая 2010

Может быть переписано в

typedef void (*T) (int&, int&);
T fn = x;

2-е утверждение очевидно, что должно было решить этот = x; вопрос. В первом выражении мы делаем T синонимом типа void(*)(int&, int&), что означает:

  • указатель на функцию ((*…))
  • возвращение void
  • и принимая 2 аргумента: int&, int&.
9 голосов
/ 03 мая 2010

Это указатель на функцию с двумя int ссылочными параметрами, которая ничего не возвращает. Указатель функции называется fn и ему присваивается значение в x.

2 голосов
/ 03 мая 2010

Указатель функции.

http://www.newty.de/fpt/intro.html#what

^ Хорошо, источник для начинающего. : -)

2 голосов
/ 03 мая 2010

Это объявляет и инициализирует указатель функции.

Имя переменной fn, и оно указывает на функцию со следующей сигнатурой:

void pointedToFunction(int&, int&)

Переменная fn инициализируется значением, содержащимся в x.

Указанную функцию можно вызвать с использованием следующего синтаксиса:

int a;
int b;
(*fn)(a,b);

Это эквивалентно

int a;
int b;
pointedToFunction(a,b);
0 голосов
/ 03 мая 2010

Страница Википедии с несколькими ссылками на тему: http://en.wikipedia.org/wiki/Function_pointer

0 голосов
/ 03 мая 2010

Это переменная указателя на функцию, которая инициализируется для элемента справа от =.

Тип функции может быть записан так:

typedef void func_t(int&,int&);

Указатель функции, чем будет:

typedef func_t *fn_t;

С этими определениями объявление переменной будет намного понятнее:

 fn_t fn = ...;
0 голосов
/ 03 мая 2010

Это указатель на функцию, которая принимает 2 целых числа в качестве аргументов и возвращает void. x должен быть именем функции.

0 голосов
/ 03 мая 2010

Это похоже на указатель функции на метод, который принимает две целочисленные ссылки и ничего не возвращает. Указатель будет называться fn. Вы назначаете его по адресу x, который, как мы надеемся, является функцией, соответствующей этому описанию.

0 голосов
/ 03 мая 2010

Это указатель на функцию, которая принимает две ссылки на int s и возвращает void.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...