TA的每日心情 | 慵懒 2016-4-21 12:07 |
|---|
签到天数: 3 天 连续签到: 1 天 [LV.2]偶尔看看I 累计签到:3 天 连续签到:1 天
|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
本帖最后由 xaut3 于 2011-5-25 11:11 编辑 ; ]. i1 a- Z3 x/ u4 m
6 _6 I0 M# e$ F本文为笔者阅读《C++必知必会》一书的技术笔记4 F! h2 l9 q7 `4 {; m9 g l+ @1 H. [$ }
将一个函数的地址初始化或赋值给一个指向函数的指针时,无需显式地取得函数地址,编译器知道隐式地获得函数的地址,因此在这种情况下&操作符是可选的,通常省略不用。如下:- 1 void (*fp)(int);8 @9 ?5 _3 @) d$ B0 O6 ~8 O
- 2
0 a8 ]* N, R! r2 a3 B - 3 extern void h(int);
9 M# a5 l; m$ U9 j p1 j - 4 extern int f(int);
! x! e) {% W$ r9 ^( N - 5 fp = f // &f的类型为 int (*)(int)而不是 void (*)(int)3 `* S$ i5 e* L5 t: Y' x( Z0 B
- 6 fp = h; //OK
# b7 u6 R2 Z" @) T - 7 fp = &h; //OK,明确赋予函数地址
复制代码 类似地,为了调用函数指针所指向的函数而对指针进行解引用操作也是不必要的,因为编译器可以帮你解引用:- (*fp)(12); //显式地解引用4 X6 X5 g) V! `+ w$ Y) J! f
- fp(12); //隐式地解引用,结果相同
复制代码 声明函数指针的数组:- 1 int (*afp[N])(); //一个具有N个元素的数组,其元素类型为指向“返回值为int“的函数的指针
, s& w% U3 a' \ U7 F) H2 n5 A* T: Y - 2 //typedef 闪亮登场7 c9 a0 E( R% s# c
- 3 typedef int (*FP)();+ n, i$ f9 _# h1 }8 t: Y
- 4 FP afp[N];
复制代码 |
|