函數跟一般變數一樣具有位址
經過編譯後所產生的機器碼起始處
也就是說
函數名稱本身記錄著函數的起始位址
像陣列名稱一樣
也記載著第一個元素的位址
指標可以指向變數
也可以指向另一個指標
更可以指向函數
這種指標稱為「函數指標」
定義格式:
欲指向的函數傳回值型態 (*指標變數名稱) (型態1 引數1 ,型態2 引數2 ,……..);
將指標指向函數格式:
指標名稱=函數名稱;
之後就可以利用函數指標呼叫函數
Ex:
[code language=”cpp”]
#include <iostream>
using namespace std;
void show(int); //函數原型宣告
int main(){
void (*ptr) (int n); //宣告函數指標
ptr=show; //將指標指向函數
(*ptr)(5); //利用指標呼叫函數
}
//函數定義
void show(int n){
for(int k=1;k<=n;k++){
cout << "Bellow!" << endl;
}
}
[/code]
[code language=”cpp”]
#include <iostream>
using namespace std;
double rectangle(double,double);
void show(double,double,double (*ptr)(double,double));
int main(void)
{
cout << "rectangle(4,6.1)=";
show(6,7.52,rectangle); // 呼叫rectangle(),並印出其值
}
double rectangle(double height,double width)
{
return (height*width);
}
void show(double x,double y,double (*ptr)(double,double))
{
cout << (*ptr)(x,y) <<span style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" data-mce-type="bookmark" class="mce_SELRES_start"></span>< endl;
}
[/code]