翻訳と辞書
Words near each other
・ 関数の合成
・ 関数の微分
・ 関数の根
・ 関数の極限
・ 関数の芽
・ 関数の零点
・ 関数へのポインタ
・ 関数オブジェクト
・ 関数プログラミング
・ 関数プロトタイプ
関数ポインタ
・ 関数ポインター
・ 関数リテラル
・ 関数一覧
・ 関数値
・ 関数原型
・ 関数同定
・ 関数同定問題
・ 関数呼出し
・ 関数問題


Dictionary Lists
翻訳と辞書 辞書検索 [ 開発暫定版 ]
スポンサード リンク

関数ポインタ : ミニ英和和英辞書
関数ポインタ[かんすう]
=====================================
〔語彙分解〕的な部分一致の検索結果は以下の通りです。

: [せき, ぜき]
 (suf) honorific added to names of makuuchi and juryo division sumo wrestlers
関数 : [かんすう]
 (n) function (e.g., math, programming, programing)
: [すう, かず]
  1. (n,n-suf) number 2. figure 

関数ポインタ ( リダイレクト:関数へのポインタ ) : ウィキペディア日本語版
関数へのポインタ[かんすうへのぽいんた]
関数へのポインタは、C, C++, Dやその他多くのプログラミング言語におけるポインタの一種である。関数へのポインタをデリファレンスすれば、そのポインタが指し示す関数サブルーチン)を呼び出せる。応用例としては、switch文を置き換えるテーブルジャンプを実装する、などといったものがある。
関数オブジェクトは、関数へのポインタに似ているが、コード領域中のエントリポイントを指す単なるポインタである関数へのポインタと違い、データ領域上に実体を持つオブジェクトであるという点が異なっている(実装の詳細は言語や処理系により異なるが)。そのため、関数オブジェクトはデータを保持でき、クロージャを再現することもできる。ゆえに、関数オブジェクトは、「関数へのポインタ」ではなく「関数」という型と値を持つようなものと言え、より強力である。
Javaなどでは、関数へのポインタを使用できないが、そのような言語では、メソッドを1つだけ持つインタフェースで同様のことを行える。また、C#Visual Basic .NETなどといった.NET Framework用の言語には、デリゲートがある。
第一級オブジェクトとして関数を使用できる(第一級関数がある)言語では、関数も引数で渡したり、戻り値で返したり、他の関数から動的に作成したりできるなどデータ同様に扱えるため、関数へのポインタは必要とされない。
==Cでの例==
この例では、関数へのポインタとして''new_function''が宣言され、そこへ関数''my_function''のアドレスを割り当てている。そして''new_function''を通じて関数を呼び出している。

#include
static int my_function(int a)
int main(void)

註:''(
*fp)(arg)''という構文は、関数へのポインタfpを通じて関数を呼び出す構文である。しかしCでは''fp(arg)''という構文も認められている〔。

次の例では、関数へのポインタを引数として他の関数に渡している。ここでは、関数''function''が、先の例のように関数へのポインタを通じて呼び出される。関数''caller''は、引数として関数へのポインタと整数値を1つ取る。引数の整数値は、その関数へのポインタを通じて関数を呼び出すときに渡す引数として用いられる。そこで宣言されている関数へのポインタのプロトタイプに適合しさえすれば、''caller''の第一引数には、どんな関数でも渡すことが可能である。

#include
static void function(int a)
static void caller(void (
*new_function)(int a), int p)
int main(void)

3番目の例でも関数へのポインタを引数として他の関数に渡して用いている。関数''f''は、指定された区間で積分\textstyle\int_^ f(x)\;dxの近似を計算する関数''integ''へ渡されている。xの値を求めるために''f(x)''が''integ''から呼び出されている。''integ''では、double型の引数を1つ取り、double型の値を返しさえすれば、どんな関数でも計算させることが可能である。

double integ(double a, double b, double (
*f)(double x))

関数へのポインタを定義する際には、typedefを用いるのが便利である。

#include
#include
typedef double (
*Fx)(double x);
int main(void)


抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)
ウィキペディアで「関数へのポインタ」の詳細全文を読む

英語版ウィキペディアに対照対訳語「 Function pointer 」があります。




スポンサード リンク
翻訳と辞書 : 翻訳のためのインターネットリソース

Copyright(C) kotoba.ne.jp 1997-2016. All Rights Reserved.