C/C+--関数を書きます.そのパラメータは関数を指すポインタで、戻りタイプも関数を指すポインタです.

1514 ワード

文字を指すポインタと整数への参照をパラメータとし、値を返さない関数です.この関数を指すポインタです.このポインタをパラメータとする関数.そして一つ
このポインタの関数を返します.このようなポインタをパラメータとし、そのパラメータを戻り値として返す関数の定義を書きます.ヒント:typedefを使用します.
/*************************************************************************
	> File Name: practice_1.cpp
	> Author: 
	> Mail: 
	> Created Time: 2016 03 15      22 35 36 
 ************************************************************************/

#include <iostream>
using namespace std;

//                  ,    
void fun1(char *ch, int & rval);//  ch, rval    

//      fun1     
typedef void (*pfun1)(char* ch, int & rval);
pfun1 pf = fun1;//pf        fun1   

//   pfun1        
void fun2(pfun1);//      

//    pfun1        
pfun1 fun3();

//    , fun1         , fun1          
pfun1 fun4(pfun1 pf)
{
    return pf;
}


int main()
{
    char* str = "cplusplus";
    int val = 100;

    cout << "  fun1(str,val):";
    fun1(str, val);

    pfun1 pf1 = fun1;
    cout << "  pf1(str, val): ";
    pf1(str, val);

    pfun1 pf2 = fun4(pf1);
    cout << "  pf(str, val): ";
    pf(str, val);
    

    return 0;
}

void fun1(char* ch, int & rval)
{

    cout << "ch = " << ch << ", rval++ = " << rval++ << endl;
}

実行結果:
  fun1(str,val):ch = cplusplus, rval++ = 100
  pf1(str, val): ch = cplusplus, rval++ = 101
  pf(str, val): ch = cplusplus, rval++ = 102