zoukankan      html  css  js  c++  java
  • 关于函数指针的总结

    1.先看下面几个声明的含义:

     int (*f)();  f是一个函数指针,他所指向的函数返回一个整型值

     int  *(*f)(); f也是一个函数指针,所指向的函数的返回值是一个整型指针

     int  *f[ ];    下标的优先级更高,所以f是一个数组,它的元素类型是指向整型的指针

    int  (*f[ ])();  f是一个数组,数组元素的类型是函数指针,它所指向的函数的返回值是一个整型值

    int  *(*f[ ])();  f是一个数组,数组元素的类型是函数指针,它所指向的函数的返回值是一个整型指针

    2 关于函数指针的使用

      函数指针最常见的两个用途是转换表和作为参数传递给另一个函数。

    1)简单声明一个函数指针并不意味着它马上就可以使用。和其他指针一样,对函数指针执行

    间接访问之前必须把它初始化为指向某个函数。下面的代码段说明了一种初始化函数指针的方法。在函数指针的初始化之前具有f的原型是很重要的,否则编译器就无法检查f的类型是否与pf所指向的类型一致。

       int  f(int);

       int  (*pf)( int ) = &f;(这个初始化中的&是可选的,因为函数名被使用时总是由编译器把它转化为函数指针)

    2)对函数指针的调用,可以使用以下三种形式:

       int  ans;

       ans = f (25 );

       ans = (*pf)(25);

       ans = pf(25);

    第一种使用方式:简单使用名字调用函数f。函数名f首先被转换为一个函数指针,该指针指定函数在内存中的位置。然后,函数调用操作符调用该函数,执行开始于这个地址的代码。

    第二种使用方式:对pf执行间接访问操作,它把函数指针转换一个函数名。这个转换并不是真正需要的,因为编译器在执行函数调用操作符转换回去。这个语句跟第一种方式中的效果完全一样

    第三种使用方式:

  • 相关阅读:
    Android——如何申请发布版SHA1值
    一些镜像下载网站
    装了两个系统后,怎么删除不需要的那一个系统
    python基础入门之十八 —— 模块和包
    python基础入门之十七 —— 异常
    python基础入门之十六 —— 继承
    python基础入门之十五 —— 类与对象
    谷歌云免费服务器申请方法
    【ROM制作工具】小白如何进行ROM解包,精简,修改,授权,打包详细图文教程
    按键精灵脚本与Total Control手机群控系统的完美结合
  • 原文地址:https://www.cnblogs.com/honglihua8688/p/3686136.html
Copyright © 2011-2022 走看看