*   >> Чтение Образование Статьи >> science >> programming

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

а, который будет иметь адрес начального кода функции. ParameterTypes являются типы параметров функции указал. Скобки и звездочка не требуется. Предположим, что вы хотите указатель на функцию myFn () выше, с именем, myFnPtr. В этом случае инициализация указатель, поплавок (* myFnPtr) (поплавок, INT) = myFn; Теперь, имя функции (например, myFn) на самом деле является указателем на функцию. Так, functionPointer и actualFunctionName стало синонимом. В нашем случае, myFnPtr и myFn стало синонимом.

Вызов функции Заостренный указателем Хотя functionPointer и actualFunctionName являются синонимами вы можете позвонить фактическое функцию, используя functionPointer таким же образом, как вы бы нам actualFunctionName. В нашей ситуации выше, вы могли бы сделать, например, myFnPtr (68.78, 50) Пример Следующий код показывает, как можно создать указатель на функцию и использовать его для вызова функции: #include с помощью патезрасе; плавать myFn (флоат ident1, INT ident2) {разница поплавок = ident1 - ident2; вернуться разницу; } Поплавок (* myFnPtr) (поплавок, INT) = myFn; INT Main () {плавать ответ = myFnPtr (6,5, 2); COUT вернуть 0; } Указатель по декларации В приведенных выше примерах указатель был создан в поплавковой, (*) (myFnPtr поплавка, INT) = myFn; Это создает указатель на инициализации.

В заявлении также адрес заостренным функции хранится в объекте указателя (myFnPtr), во время создания указателя. Вы можете создать указатель по декларации, а затем присвоить значение адреса позже следующим образом: поплавок (*) myFnPtr (поплавок, INT); myFnPtr = myFn; В этом случае, оба утверждения или оператор присваивания должен быть в функции (как основной функции). Используйте в указатель на функцию Основное использование указателя на функцию является в качестве параметра другой функции.

Следующий код иллюстрирует это: #include, используя патезрасе; плавать myFn (флоат ident1, INT ident2) {разница поплавок = ident1 - ident2; вернуться разницу; } Плавать squareDifference (поплавок (* myFnPtr) (поплавок, INT)) {плавать пл = myFnPtr (6,5, 2) * myFnPtr (6,5, 2); вернуться пл; } INT Main () {плавать ответ = squareDifference (myFn); COUT вернуть 0; } Секрет в том, что вы разделяете инициализации в его левой и правой операнда.

Левый операнд идет в скобках другой функции (squareDifference) в качестве параметра, в то время как правый операнд используется в качестве аргумента в призвании другой функции. То, что мы сделали здесь, чтобы передать указатель на функцию, как же то, что прои

Page   <<  [1] [2] [3] >>
Copyright © 2008 - 2016 Чтение Образование Статьи,https://ru.nmjjxx.com All rights reserved.