美文网首页
函数指针 指针 函数

函数指针 指针 函数

作者: sf705 | 来源:发表于2017-07-24 15:10 被阅读21次

    指针和函数的各种结合,看到都头疼,以前也看过这方面的,可是不久又忘了,好记性不如赖笔头,做一下整理。
    先让自己懵逼一下(类型随意吧)

    • int (*p)(int a,int b)
    • typedef int(*Multi)(int a, int b);
    • int (*)[10] p;
    • int* (*fun1)(char * p1,char * p2);
    • char * *fun2(char * p1,char * p2);
    • char * fun3(char * p1,char * p2);
    • ((void() ())0)();

    反正我一眼看着很懵逼 还是慢慢来吧

    函数指针

    • 格式:返回类型(*指针名)(参数)
    • int (*p)(int a,int b) 函数指针p 指向一个函数,该函数返回类型int,该函数还有两个int类型的参数
      使用方法如下
    #include <iostream>
    using namespace std;
    int add(int x, int y)
    {
        return x + y;
    }
    void print(int(*p)(int x, int y),int a,int b)//将函数指针作为参数,后面的a,b需要加上,因为p中的x,y不可见
    {
        cout << "this is a print function,the result is " << p(a, b) << endl;
    }
    
    int(*funPoint)(int a, int b);//声明一个函数指针
    int _tmain(int argc, _TCHAR* argv[])
    {
        funPoint  = add;//funPoint指向add的地址,add后面不能带参数
        //下面三种方式等同,结果一样
        cout << (*funPoint)(2, 4) << endl;
        cout << funPoint(2,4) << endl;
        cout << add(2, 4) << endl;
        
        //将函数指针作为参数
        print(add, 2, 4);//输出print函数中的结果
        return 0;
    }
    

    不过这个函数指针,在作为别的函数的参数时,写的好麻烦,需要把自己的参数都带上,print(int(*p)(int x, int y),int a,int b)能不能简单点,可以用typedef啊

    typedef函数指针

    • 格式:typedef 返回类型 (*函数指针名)(参数)
    • typedef int(*p)(int a, int b) 这样就可以将p 作为一个类型来看待了
      实现如下:
    #include <iostream>
    using namespace std;
    typedef int(*Multi)(int a, int b);//这样写就可以将函数指针作为一个类型了
    
    int mul(int x, int y)
    {
        return x*y;
    }
    void show(Multi a, int x, int y)//将函数指针作为参数,省了不少事
    {
        cout << "this is a Multi function, the result is " << a(x, y) << endl;
    }
    int _tmain(int argc, _TCHAR* argv[])
    {
        Multi a = mul;//如果没有加typedef,只能写成:Multi = mul
        //以下三种方式一样
        cout << mul(2, 4) << endl;
        cout << a(2, 4) << endl;
        cout << (*a)(2, 4) << endl;
        
        //将函数指针作为参数
        show(a, 2, 4);
        return 0;
    }
    

    后几个类型,参考一个这个博客:c语言函数指针的理解与使用 写的很详细了

    相关文章

      网友评论

          本文标题:函数指针 指针 函数

          本文链接:https://www.haomeiwen.com/subject/ijrbkxtx.html