程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> C語言高級程序設計——函數指針

C語言高級程序設計——函數指針

編輯:關於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)的函數。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved