関数へのポインタ1:
*タイプ指定子関数名(パラメータリスト)
{
.......... / * *関数本体/
.......... / * *関数本体/
}
これは「*」で、関数名の前に追加すると、この関数はポインタ型であることを示しています
2.関数ポインタ:
型指定(*ポインタ変数名)();
例:int型(* PF)(int型);
3.関数へのポインタ:例
書式#include <stdio.hに> する#include <math.h>の 書式#include <stdlib.h>に含ま / * CHAR * DAY_NAME(int型N); メインint型() { 私はint型。 CHAR * DAY_NAME(int型N); //関数の戻り値を定義するタイプの関数へのポインタであります printf( "入力日はありません:\ nを"); scanf関数( "%d個"、&I)。 出口(1)(iが0 <)場合。 printf( "デイません:%2dと - >%sの\ n" は、I、DAY_NAME(I));関数呼び出しへのポインタ// 0を返します。 } CHAR * DAY_NAME(int型N){ //ポインタの静的な配列 静的文字*名[] = { 「不正の日」、 "月曜"、 "火曜日"、 "水曜日"、 "木曜日"、 "金曜日"、 "土曜日"、 "日曜日" }。 リターン((N <1 || N> 7)名[0]:名前[N])。 } * / チャー * DAY_NAME(CHAR *名[]、int型N) { char * PP1、* PP2。 PP1 = * 名; PP2 = *(名+ N)。 リターン((N < 1 || N> 7)?PP1:PP2)。 } int型のmain() { 静的 のchar *名[] = { " 不正の日" 、 " 月曜日" 、 " 火曜日" 、 " 水曜日" 、 " 木曜日" 、 " 金曜日" 、 " 土曜日" 、 " 日曜日" }。 char *のPS; int型私は、 CHAR * DAY_NAME(チャー *名[]、int型N); printf(" 入力日はありません:\ nを" ); scanf関数(" %d個"、&I)。 あれば(私は< 0出口)(1 )。 PS = DAY_NAME(名前、I); printf(" デイません:%2dと- >%sの\ nは" 、私は、ps); リターン 0 ; }
4.関数ポインタ:例
int型の最大値(int型、int型のB) { もし(A> B)を返します。 他の リターンB; } メイン() { int型の最大値(int型 A、int型B); int型(Pmaxの*)(int型、int型); // のカスタムパラメータリスト(int型、int型)関数ポインタ int型のX、Y、Z; Pmaxを =最大; // 関数ポインタPMAX - >関数max関数エントリ・ポイント・アドレス(最初のアドレス) のprintf(" INPUT二つの数字:\ N- " ); scanf関数(" %dの%のD "、およびX&Y)。 Z =(Pmaxを*)(X、Y); // 関数max(X、Y)を呼び出すのと同じ; のprintf(" maxmum%= D " 、Z)。 }
5.まとめ
関数ポインタ、先頭アドレスへのポインタは、ファンクションポイントのタイプの関数です。
関数ポインタ、関数は、関数は、関数ポインタ型のタイプを返します。