Maison  >  Article  >  développement back-end  >  Comment fonctionnent les pointeurs de fonction en C++ ?

Comment fonctionnent les pointeurs de fonction en C++ ?

PHPz
PHPzoriginal
2024-06-04 17:37:10792parcourir

En C++, un pointeur de fonction est une variable pointant vers une fonction, qui peut transmettre ou stocker dynamiquement la fonction en tant que paramètre. La syntaxe est la suivante : nom du type * nom de la fonction. Lors de l'allocation, utilisez l'adresse du pointeur de fonction et déréférencez-la lors de l'appel. Par exemple, lors du calcul de la valeur maximale à l'aide d'un pointeur de fonction, le calcul est effectué en allouant le pointeur de fonction et en l'appelant.

函数指针在 C++ 中如何工作?

Comment fonctionnent les pointeurs de fonction en C++

En C++, un pointeur de fonction est une variable qui pointe vers une fonction. Cela nous permet de transmettre dynamiquement des fonctions en tant que paramètres ou de les stocker dans des structures de données.

Syntaxe

Un pointeur de fonction est déclaré comme une fonction normale, mais le nom du type est suivi d'un astérisque (*) :

typedef void (*FunctionPointer)(int);

Assignment

Nous pouvons attribuer une adresse de fonction à un pointeur de fonction tout comme un pointeur normal :

FunctionPointer fp = &myFunction;

Call

On peut l'appeler en déréférençant un pointeur de fonction :

fp(10);

Exemple pratique

Considérons un programme qui utilise un pointeur de fonction pour calculer le maximum de deux nombres :

#include <iostream>

using namespace std;

// 最大值函数
int max(int a, int b) {
  return a > b ? a : b;
}

// 函数指针比较函数
int compare(int a, int b, int (*fp)(int, int)) {
  return fp(a, b);
}

int main() {
  // 分配函数指针并调用它来计算两数的最大值
  int (*fp)(int, int) = &max;
  int result = compare(5, 10, fp);

  // 打印结果
  cout << "最大值:" << result << endl;

  return 0;
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn