関数ポインタ:関数の変数へのポインタので、関数ポインタ自体ポインタ変数であるべきであるが、関数へのポインタ変数ポイント。
目的関数:を有する関数ポインタ、すなわち本質的関数です。
関数ポインタの例:
する#include <stdio.hに> する#include <iostreamの> INT MAX(INT、INT ); INT分(INT、INT ); int型の追加(INT、INTを); int型プロセス(int型 A、INT B、INT(* FUNC) (int型、INT )B)が、 INT メイン(){ int型、Bと、 のprintf(" スペースで区切られた値、B入力:\ N- " ); scanf_s(" %D%D "、&Aを、&B)。 printf(" =%のD、B =%d個、最大=%D \ n " 、A、B、工程(a、b)は、MAX)。 printf(" =%のD、B =%dの、分=%D \ n " 、A、B、工程(A、B、分))。 printf(" =%のD、B =%のD、=%D \追加N " 、A、B、工程(A、B、追加))。 システム(「一時停止」)。 リターン 0 ; } int型の最大値(int型 A、int型B){ 場合(A> = B){ 返します。 } 他 { 戻りB。 } } INT分(INT A、int型B){ 場合(> = B){ 戻りB。 } 他 { 返します。 } } int型の追加(int型、int型B){ 返す +のBと、 } int型のプロセスは、(int型、int型、Bは、INT()INT INT(* FUNCをBを {)) リターン(* FUNC)(B)を、 }
関数へのポインタの例:
する#include <stdio.hに> する#include <iostreamの> する#include < 文字列・H> CHAR * initMemory(){ // メモリのオープン32バイト、文字でのメモリによって指さチャー * S =(CHAR *) malloc関数(はsizeof(文字)* 32 ); 戻りS; } int型のmain(){ // 関数の戻り値を受信したポインタの定義のchar * PTR = initMemory(); strcpyの(PTR、" ハローワールド" ); のprintf(" % S \ N- 」、PTR); // リリースメモリ 無料(PTR); システム(" PAUSE " ); の戻り 0 ; }