C/C++——指向函式的指標和指向函式的指標的陣列

readyao發表於2016-03-15

1、指向函式的指標


對於一個函式只能做兩件事情:呼叫它,或是取得它的地址。
可以取得函式的地址並賦值給指向函式的指標,並在以後使用這個指標呼叫該函式。

void fun(int num)
{
	cout << num << endl;
}

void (*pfun)(int num);//pfun此時就是一個函式指標

int main()
{
	int value = 100;
	
	pfun = &fun;//獲得函式fun的地址
	pfun(value);//等價於呼叫 fun(value);
	
	//取地址運算子&可以不要;
	pfun = fun;
	pfun(value);//也是等價於呼叫 fun(value);

	return 0;
}

指向函式的指標的宣告中也需要給出引數型別和返回值型別。指向函式的指標只能被引數型別和返回值型別都一樣的函式賦值。

比如:
void (*pfun)(string);
void f1(string){}
int f2(string) {}
void f3(int){}
pfun = f1;//正確
pfun = f2;//不正確,返回值型別不同
pfun = f3;//不正確,引數型別不同


2、指向函式的指標的陣列

typedef void (*PF)();
PF edit_opts[] = {&f1, &f2, &f3};//edit_opts就是指向函式指標的陣列,陣列裡面每個元素的型別都是void (*PF)();

相關文章