设为首页 加入收藏

TOP

C语言高级程序设计――函数指针
2014-11-23 19:15:13 来源: 作者: 【 】 浏览:8
Tags:语言 高级 程序设计 函数 指针
函数指针指向代码区,普通指针指向数据区。函数指针定义如下: 返回类型 (*函数指针变量)(参数表) 例如,void (*pf)()指向形如void f()这样的函数。 使用函数指针的例子:
void open();//对几个函数声明
void print();
void exit();
void (*pfs[])()={open,print,exit};//函数指针数组
int main(){
	int i;
	void (*pf)();
	pf=open;
	(*pf)();//////调用open()
	for(i=0;i<3;i++)////依次调用open()、print()、exit()函数
		(*pfs[i])();
}
void open(){
	printf("open\n");
}
void print(){
	printf("print\n");
}
void exit(){
	printf("exit\n");
}
从这个例子可以看出,函数名本身就是函数代码区的地址。 还有几个容易混淆的定义,考虑下面几个定义:
void (*getInterrupt(int no))();
void setInterrupt(int no,void (*pf));
LRESULT (*lpfnWndProc)(HWND,UNIT,WPARM,LPARAM);
第一个声明表示getInterrupt的原型声明,它有一个int类型的参数,返回值是指向类似void f()函数的指针。其实getInterrupt(int no)运行后就是这个函数的返回值. 第二个声明表示函数setInterrupt的原型声明,返回值是void,它有两个参数,类型分别是int和指向void f()函数的指针。 第三个声明定义了一个指针变量lpfnWndProc,指向形如LRESULT wndproc(HWND,UNIT,WPARM,LPARAM)的函数。
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C - Hyperhuffman(哈弗曼值) 下一篇ASC(1)C(树形DP)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: