W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
指向函數(shù)的指針必須指定指針指向什么類型的函數(shù)。
聲明應(yīng)該識(shí)別函數(shù)的返回類型和函數(shù)的參數(shù)列表。
聲明應(yīng)提供與函數(shù)原型相同的功能相同的信息。
假設(shè)我們有以下函數(shù)。
double my_func(int); // prototype
下面是一個(gè)適當(dāng)指針類型的聲明:
double (*pf)(int);
pf指向一個(gè)使用一個(gè)int參數(shù)并返回類型double的函數(shù)。
我們必須把括號(hào)圍繞* pf提供適當(dāng)?shù)倪\(yùn)算符優(yōu)先級(jí)。
括號(hào)的優(yōu)先級(jí)高于*運(yùn)算符。
*pf(int)表示pf()是一個(gè)返回指針的函數(shù)。
(*pf)(int)表示pf是指向函數(shù)的指針。
在您正確聲明pf后,您可以為其賦值匹配函數(shù)的地址:
double my_func(int); double (*pf)(int); pf = my_func; // pf now points to the my_func() function
my_func()必須匹配簽名和返回類型的pf。
(*pf)起到與函數(shù)名稱相同的作用。
我們可以使用(*pf),就像它是一個(gè)函數(shù)名一樣:
double (int); double (*pf)(int); pf = my_func; // pf now points to the my_func() function double x = my_func(4); // call my_func() using the function name double y = (*pf)(5); // call my_func() using the pointer pf
以下代碼演示了在程序中使用函數(shù)指針。
#include <iostream>
using namespace std;
double my_func(int);
void estimate(int lines, double (*pf)(int));
int main(){
int code = 40;
estimate(code, my_func);
return 0;
}
double my_func(int lns)
{
return 0.05 * lns;
}
void estimate(int lines, double (*pf)(int))
{
cout << lines << " lines will take ";
cout << (*pf)(lines) << " hour(s)\n";
}
上面的代碼生成以下結(jié)果。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: