関数ポインタとポインタはC言語の関数を区別するために

関数へのポインタ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.まとめ

関数ポインタ、先頭アドレスへのポインタは、ファンクションポイントのタイプの関数です。

関数ポインタ、関数は、関数は、関数ポインタ型のタイプを返します。

おすすめ

転載: www.cnblogs.com/liusanjian/p/11689684.html