ホームページ  >  記事  >  バックエンド開発  >  C++ では関数ポインタはどのように機能しますか?

C++ では関数ポインタはどのように機能しますか?

PHPz
PHPzオリジナル
2024-06-04 17:37:10835ブラウズ

C++ では、関数ポインターは関数を指す変数であり、関数をパラメーターとして動的に渡したり保存したりできます。構文は、型名 * 関数名です。割り当てるときは関数ポインタ アドレスを使用し、呼び出し時にそれを逆参照します。例えば、関数ポインタを使用して最大値を計算する場合、関数ポインタを割り当てて呼び出すことで計算が行われます。

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

C++ での関数ポインターの仕組み

C++ では、関数ポインターは関数を指す変数です。これにより、関数をパラメータとして動的に渡したり、データ構造に格納したりすることができます。

構文

関数ポインタは通常の関数のように宣言されますが、型名の後にアスタリスク (*) が続きます:

typedef void (*FunctionPointer)(int);

代入

通常のポインタと同じように、関数ポインタに関数アドレスを割り当てることができます。

FunctionPointer fp = &myFunction;

Call

関数ポインタを逆参照することで呼び出すことができます:

fp(10);

実用的な例

関数ポインタを使用して 2 つの数値の最大値を計算するプログラムを考えてみましょう:

#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;
}

以上がC++ では関数ポインタはどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。