设为首页收藏本站|繁體中文 快速切换版块

 找回密码
 立即加入
搜索
查看: 1308|回复: 0

C++中的函数指针

[复制链接]
  • TA的每日心情
    慵懒
    2016-4-21 12:07
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    累计签到:3 天
    连续签到:1 天
    发表于 2011-5-25 11:07:39 | 显示全部楼层 |阅读模式

    马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!

    您需要 登录 才可以下载或查看,没有账号?立即加入

    ×
    本帖最后由 xaut3 于 2011-5-25 11:11 编辑 % w0 L+ R1 I/ L' h# H( g  y
    / |( m+ ^/ U: B7 p/ S) C% P# d
    本文为笔者阅读《C++必知必会》一书的技术笔记0 ~, ~$ m3 Z# ?4 _9 i( Q8 A0 N4 ]( t4 s
    将一个函数的地址初始化或赋值给一个指向函数的指针时,无需显式地取得函数地址,编译器知道隐式地获得函数的地址,因此在这种情况下&操作符是可选的,通常省略不用。如下:
    1. 1 void (*fp)(int);
      ) y; S: O( V; A- c* E, @3 X- A4 [
    2. 2 ! ?! I0 U( a# |2 J- b
    3. 3 extern void h(int);* s2 K" o  x% t  J5 L8 F- a* e0 D9 c
    4. 4 extern int f(int);: ~  m) h* k( H2 f, N* V" [3 T
    5. 5 fp = f // &f的类型为 int (*)(int)而不是 void (*)(int)6 ~9 ^) w2 e# v  Q. `
    6. 6 fp = h; //OK
      % [" E4 |" j& X$ d) g
    7. 7 fp = &h; //OK,明确赋予函数地址
    复制代码
    类似地,为了调用函数指针所指向的函数而对指针进行解引用操作也是不必要的,因为编译器可以帮你解引用:
    1. (*fp)(12); //显式地解引用
      ' n6 {1 U% V7 I/ I5 W$ }5 z: C7 A
    2. fp(12); //隐式地解引用,结果相同
    复制代码
    声明函数指针的数组:
    1. 1 int (*afp[N])(); //一个具有N个元素的数组,其元素类型为指向“返回值为int“的函数的指针
      ) t) b; I9 {, u8 X7 n, [
    2. 2 //typedef 闪亮登场; A8 L* ?  A$ j( g
    3. 3 typedef int (*FP)();
      , @, O+ Q% v2 K; x! ^7 o/ u) D% y
    4. 4 FP afp[N];
    复制代码
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    楼主热帖
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
    您需要登录后才可以回帖 登录 | 立即加入

    本版积分规则

    招聘斑竹

    小黑屋|手机版|APP下载(beta)|Archiver|电力研学网 ( 赣ICP备12000811号-1|赣公网安备36040302000210号 )|网站地图

    GMT+8, 2026-4-15 17:37

    Powered by Discuz! X3.5 Licensed

    © 2001-2026 Discuz! Team.

    快速回复 返回顶部 返回列表