C语言高级程序设计——函数指针

简介:
函数指针指向代码区,普通指针指向数据区。函数指针定义如下:
返回类型 (*函数指针变量)(参数表)
例如,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)的函数。
目录
相关文章
|
8天前
|
存储 C语言
C语言 — 指针进阶篇(下)
C语言 — 指针进阶篇(下)
15 0
|
8天前
|
存储 C语言 C++
C语言 — 指针进阶篇(上)
C语言 — 指针进阶篇(上)
6 0
|
15天前
|
存储 C语言
【C语言】深入解开指针(三)2
【C语言】深入解开指针(三)
|
15天前
|
存储 程序员 C语言
【C语言】深入解开指针(二)2
【C语言】深入解开指针(二)
【C语言】深入解开指针(二)2
|
15天前
|
存储 C语言
【C语言】深入解开指针(一)1
【C语言】深入解开指针(一)
|
16天前
|
C语言 索引
基于C语言的函数指针应用-消息命令处理框架
基于C语言的函数指针应用-消息命令处理框架
11 0
|
23天前
|
存储 人工智能 编译器
C语言指针详解
指针运算,指针和数组,二级指针
C语言指针详解
|
23天前
|
存储 C语言
C语言第二十四弹---指针(八)
C语言第二十四弹---指针(八)
|
23天前
|
编译器 C语言
C语言第十九弹---指针(三)
C语言第十九弹---指针(三)
|
27天前
|
存储 文件存储 C语言
《C语言程序设计》课程设计 -- 火车票票务管理系统
《C语言程序设计》课程设计 -- 火车票票务管理系统
22 1