zoukankan      html  css  js  c++  java
  • C++学习笔记 函数指针与指针函数

    函数指针:指向函数的指针,首先它是指针变量(同指向一个整形变量、字符、数组一样),其次它指向一个函数(地址)。

    声明:函数类型 (* 指针变量名)(形参列表)

    函数类型,指明函数的返回类型,由于()优先级高于*,所以指针变量名外的括号不能少,后面形参列表表示指针变量指向的函数所带的参数列表。


    //
    int max(int, int);

    int (* p)(int, int) = &max;

    int a, b, c, d;
    cout<<"Input 3 numbers:"<<endl;
    cout<<"a:";
    cin>>a;
    cout<<"b:";
    cin>>b;
    cout<<"c:";
    cin>>c;

    d = p(p(a, b), c);

    cout<<"Max number:"<<d<<endl;


    int max(int x, int y)
    {
    return x > y ? x : y;
    }

    上面相当于用函数指针p,代替了max,为什么能这样?

    事实上,每一个函数都有一个入口地址,这个地址相当于一个指针,而函数名表示的就是该函数的首地址(入口地址)。这样的话就有:p = &a 同 p = a 等价,下面的代码也是等价的:


    //
    d = (* p)(( *p)(a, b), c);

    //
    d = p(p(a, b), c);

    //
    d = max(max(a, b), c);

    指针函数:首先它是一个函数,其次它返回的类型是一个指针。

    声明:类型标识符 *函数名(参数列表)

    类型标识符,用于限定返回的类型(是指向型、字符型或者数组)

    参考:

    函数指针

  • 相关阅读:
    实现一个简易的Spring MVC
    解决IntelIij DEA控制台乱码
    01、SpringBoot中关于tomcat的一些常用配置
    Java动态代理的简单实现
    MVVM中viewmodel的理解
    eclipse常用快捷键
    导入mysql报错问题
    mysql主从配置思路
    rpm安装jdk7
    13个开源GIS软件 你了解几个?
  • 原文地址:https://www.cnblogs.com/meteoric_cry/p/3067335.html
Copyright © 2011-2022 走看看