C/C++—— 寫一個函式,它的引數為指向函式的指標,返回型別也為指向函式的指標

readyao發表於2016-03-18
 一個函式,它以指向字元的指標和對整數的引用為引數,不返回值;一個指向這個函式的指標;一個以這種指標為引數的函式;以及一個

返回這種指標的函式。寫出一個函式的定義,它以一個這樣的指標作為引數,並返回其引數作為返回值。提示:使用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

相關文章