Introduction
Pointeurs de fonction, les pointeurs sont juste un bloc de mémoire qui pointent vers un autre bloc de mémoire qui détiennent réellement les données, la classe, fonction, etc mais le pointeur peut être modifié pour pointer vers un bloc dfferent de mémoire. La meilleure chose à propos des pointeurs que sont capables de faire la même chose sur les données référencées dans le pointeur.
Un pointeur de fonction, est en mesure de pointer vers une fonction et appeler cette fonction avec les mêmes paramètres similaires, mais alors si le pointeur de référence est redirigé vers une autre méthode, il sera toujours appel à un même façon et ont les mêmes paramètres qui lui est passé, mais simplement appeler une fonction différente.
Déclarer un pointeur de fonction
Pour déclarer un pointeur de fonction
returntype (*functionpointername)(parameters);
Comme vous pouvez le dire à la déclaration est très similaire à une fonction standard, de retour de type nom de fonction et paramètres, mais dans ce cas, vous disposez d'un * (pointeur) à une fonction.
Le type de retour et les paramètres exemple
int (*intAddSum)(int value1, int value2) = NULL;
Dans ce qui précède il retournera un int avec l'ajout des deux paramètres int, c'est toujours une bonne idée de mettre le pointeur de fonction à un NULL, vous ne savez mai, où la référence de mémoire par défaut mai goto!.
Basic exemple d'un pointeur de fonction
Voici un exemple de base d'un pointeur de fonction, il pointera à une méthode qui va prendre 2 paramètres et de les additionner, de s'y rendre MMUU valorisé.
int addTwo(int value1, int value2)
{
return (value1 + value2);
}
int (*fPointer)(int , int) = NULL;
int main()
{
// the function pointer will take the address/reference (&) of the funtion addTwo
fPointer fP = &addTwo;
// call just a normal function.
fPointer(3,5);
return 0;
}
- int addTwo(int value1, int value2)
- {
- return (value1 + value2);
- }
-
- int (*fPointer)(int , int) = NULL;
-
- int main()
- {
- // the function pointer will take the address/reference (&) of the funtion addTwo
- fPointer fP = &addTwo;
- // call just a normal function.
- fPointer(3,5);
- return 0;
- }
-
Code pleine de changer le pointeur de la
Voici un code complet qui va changer la référence du pointeur et également passer le pointeur de fonction à une autre méthode qui sera appelée à partir de là, si vous pouvez également passer des pointeurs de fonction, C + + est une grande langue au code po
#include <iostream>
using namespace std;
void normalHi()
{
cout << "hi" << endl;
}
void normalBye()
{
cout << "bye" << endl;
}
// always set the function pointer to NULL.
void (*func)() = NULL;
// to pass a function pointer to a function.
void callFunc( void (*function)())
{
function();
}
int main(int argc, char* argv[])
{
// setup as the normalHi function
func=&normalHi;
func();
// change to the other function
func=&normalBye;
func();
// call the function pointed to within another function.
callFunc(func);
return 0;
}
- #include <iostream>
-
- using namespace std;
-
- void normalHi()
- {
- cout << "hi" << endl;
- }
-
- void normalBye()
- {
- cout << "bye" << endl;
- }
-
- // always set the function pointer to NULL.
- void (*func)() = NULL;
-
- // to pass a function pointer to a function.
- void callFunc( void (*function)())
- {
- function();
- }
-
- int main(int argc, char* argv[])
- {
- // setup as the normalHi function
- func=&normalHi;
- func();
- // change to the other function
- func=&normalBye;
- func();
-
- // call the function pointed to within another function.
- callFunc(func);
- return 0;
- }
Conclusion
Pointeurs de fonction sont très utilement et vous permet de configurer une liste un des pointeurs de fonction au moment de l'exécution qui ne serait pas connaître au moment de la compilation. Espérons que cela contribuera à une meilleure compréhension de ce qu'est un pointeur et des pointeurs de fonction sont.
Je n'aime vraiment à tout commentaire concernant toute tutorial / poste, répondez simplement ou PM me .. heureux de vous aider, à mieux partager leurs connaissances.