andylei
导航
C++博客
首页
新随笔
联系
聚合
管理
<
2024年12月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
留言簿
给我留言
查看公开留言
查看私人留言
文章分类
Notes
(rss)
PMP
(rss)
随笔档案
2010年3月 (6)
2010年2月 (2)
文章档案
2010年3月 (1)
阅读排行榜
1. 使用 lsof 工具查看CLOSE_WAIT进程信息(4719)
2. C++中使用#号输出变量名 - 在调试时有用(1969)
3. 在ubuntu中安装 manpages-dev(1032)
4. Unix下IO模型(723)
5. 在QT中编写linux 程序 初次问题(549)
评论排行榜
1. C++中使用#号输出变量名 - 在调试时有用(0)
2. 函数指针的应用(0)
3. 在ubuntu中安装 manpages-dev(0)
4. TCP状态转换(0)
5. 在QT中编写linux 程序 初次问题(0)
常用链接
我的随笔
我的评论
我参与的随笔
统计
随笔 - 8
文章 - 1
评论 - 0
引用 - 0
最新评论
函数指针的应用
函数指针的定义:
void (*funcPtr)();
这个表达式定义一个指向没有参数,没有返回值的函数。函数指针变量名是funcPtr. 分析一个较复杂的函数指针定义表达式时,可按下列步骤进行:
先找到变量名
找变量名右边的项,然后找左边的项,然后右边,...这种右-左-右的方法适用于大多数的表达式。
void (*funcPtr)();的分析
变量名是funcPtr,
找右边,右边没有项了,只是一个右括号:")"
找左边,变量左边是*表示funcPtr是一个指针
找右边, 是(),表示一个空参数列表
找左边,*的左边是void, 表示函数的返回类型。
结果:
funcPtr是一个指向函数的指针,该函数无参数,返回类型是void.
void * (*(*fp1)(int))[10];的分析:
fp1
右: )
左: *, fp1是一个指针
右:(int), fp1指向的函数的参数是int
左:*,fp1指向的函数的返回值是一个指针
右[10],fp1指向的函数的返回值是一个指针数组
左void *,指针数组指向的是void类型。
float (*(*fp2)(int,int,float))(int);
fp2指向一个带有三个参数的函数,这个函数f返回一个指针,该指针又指向一个函数,这个函数有一个int参数,返回类型是float.
使用函数指针
定义函数指针
定义函数
将函数地址赋给函数指针
通过函数指针调用函数
#include
<
iostream
>
using
namespace
std;
void
func(){
cout
<<
"
func() called
"
<<
endl;
}
int
main(){
void
(
*
fp)();
//
define a function pointer
fp
=
func;
//
Initialize it
(
*
fp)();
//
Dereferencing calls the function
void
(
*
fp2)()
=
func;
//
define and initialize
(
*
fp2)();
}
posted on 2010-02-04 17:02
逆水行舟
阅读(420)
评论(0)
编辑
收藏
引用
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
博问
Chat2DB
管理
Powered by:
C++博客
Copyright © 逆水行舟