• 函数名与函数指针


      先来看一个程序:

    /*************************************************************
    
        函数指针与函数名
    
    **************************************************************/
    
    #include <iostream>
    using namespace std;
    
    int max(int, int);
    
    int main()
    {
        cout<<max(1, 2)<<endl;
        cout<<(*max)(1, 2)<<endl;
    
        cout<<max<<endl;
        cout<<(*max)<<endl;
        cout<<&max<<endl;
    
        int (*p)(int, int);
        p = max;
    
        cout<<p(1, 2)<<endl;
        cout<<(*p)(1, 2)<<endl;
    
        cout<<p<<endl;
        cout<<(*p)<<endl;
        cout<<&p<<endl;
    
        int (*q)(int, int);
        q = &max;
    
        cout<<q(1, 2)<<endl;
        cout<<(*q)(1, 2)<<endl;
    
        cout<<q<<endl;
        cout<<(*q)<<endl;
        cout<<&q<<endl;
    
        return 0;
    }
    
    int max(int a, int b)
    {
        return a > b? a : b;
    }

      运行结果:

    2
    2
    0040120D
    0040120D
    0040120D
    2
    2
    0040120D
    0040120D
    0012FF7C
    2
    2
    0040120D
    0040120D
    0012FF78

     引用文章《彻底搞定C指针-函数名不得已函数指针》的结论语: 

      1. 其实,max的函数名与函数指针p, q都是一样的,即都是函数指针。max函数名是一个函数指针常量,而p, q是一个函数数指针变量,这是它们的关系。
      2. 但函数名调用如果都得如(*max)(1, 2);这样,那书写与读起来都是不方便和不习惯的。所以C语言的设计者们才会设计成又可允许max(1, 2);这种形式地调用(这样方便多了并与数学中的函数形式一样)。
      3. 为统一起见,P, q函数指针变量也可以p(1, 2), q(1, 2)的形式来调用。
      4. 赋值时,即可P = max形式,也可q = &max。
  • 相关阅读:
    项目报错二
    项目报错一
    OCP-1Z0-051-V9.02-21题
    Windows API——OpenClipboard——剪切板
    如果在CEdit中实现Ctrl+V、Ctrl+C、Ctrl+X的功能
    OCP-1Z0-051-V9.02-18题
    OCP-1Z0-051-V9.02-17题
    OCP-1Z0-051-V9.02-15题
    OCP-1Z0-051-V9.02-14题
    OCP-1Z0-051-V9.02-12题
  • 原文地址:https://www.cnblogs.com/danshui/p/2745424.html
Copyright © 2020-2023  润新知