言語cの機能に差関数ポインタとポインタ

関数ポインタ:関数の変数へのポインタので、関数ポインタ自体ポインタ変数であるべきであるが、関数へのポインタ変数ポイント。

目的関数:を有する関数ポインタ、すなわち本質的関数です。

関数ポインタの例:

する#include <stdio.hに> 
する#include <iostreamの>
 INT MAX(INTINT );
 INT分(INTINT );
 int型の追加(INTINTを);
 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 ; 
}

おすすめ

転載: www.cnblogs.com/xiximayou/p/12126393.html