Tutoriel: Les pointeurs de fonction

  • genux
  • Graduate
  • Graduate
  • Avatar de l’utilisateur
  • Inscription: Jan 22, 2010
  • Messages: 106
  • Loc: UK
  • Status: Offline

Message Janvier 25th, 2010, 3:06 pm

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
Code: [ Select ]
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
Code: [ Select ]
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é.
Code: [ Select ]
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;
}

  1. int addTwo(int value1, int value2)
  2. {
  3.     return (value1 + value2);
  4. }
  5. int (*fPointer)(int , int) = NULL;
  6. int main()
  7. {
  8.     // the function pointer will take the address/reference (&) of the funtion addTwo
  9.     fPointer fP = &addTwo;
  10.     // call just a normal function.
  11.     fPointer(3,5);
  12.     return 0;
  13. }


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

Code: [ Select ]
#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;
}
  1. #include <iostream>
  2. using namespace std;
  3. void normalHi()
  4. {
  5.     cout << "hi" << endl;   
  6. }
  7. void normalBye()
  8. {
  9.     cout << "bye" << endl;
  10. }
  11. // always set the function pointer to NULL.
  12. void (*func)() = NULL;
  13. // to pass a function pointer to a function.
  14. void callFunc( void (*function)())
  15. {
  16.     function();
  17. }
  18. int main(int argc, char* argv[])
  19. {
  20.     // setup as the normalHi function
  21.     func=&normalHi;
  22.     func();
  23.     // change to the other function
  24.     func=&normalBye;
  25.     func();
  26.     // call the function pointed to within another function.
  27.     callFunc(func);
  28.     return 0;
  29. }


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.
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Janvier 25th, 2010, 3:06 pm

Afficher de l'information

  • Total des messages de ce sujet: 1 message
  • Modérateur: Tutorial Writers
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC