C 之函式指標

2021-09-22 16:46:35 字數 1530 閱讀 2025

首先了解一下基礎知識:

學習過c語言之後我們知道,函式是c語言的基本組成單位。函式其實也有他自己 的位址,函式的位址儲存在機器語言的記憶體的開始位址,使用cout來輸出它的位址。

如果乙個函式是dosomething(),那麼dosomething就是函式的位址。

函式指標的申明:

方法一:宣告與初始化分開

double c_perimeter(double radius);

double (*pf)(double );

pf = c_perimeter;

方法二:宣告的同時進行初始化

double c_perimeter(double radius);

double (*pf)(double ) = c_perimeter;

可以看出相較與原函式:

1、函式指標的返回值型別沒有發生改變;

2、形參的型別沒有發生改變,但是省略形參的值;

3、c_perimeter替換成了(*pf),這個括號不能省略,因為 () 的優先順序高於 * 的優先順序,將函式位址賦值給pf,這樣pf就是乙個函式指標了,有些類似於普通指標和普通變數之間的位址賦值關係。

注意:pf的特徵標(形參)和返回值必須和原函式相同。

函式指標的實現:

#include #include using namespace std;

const double pi = 3.14159;

double c_perimeter(double radius)

double c_area(double radius)

void calculate(double r, double(*pf)(double))

double* fun2(double a, int x)

void calculate(double *arr, int x, double* (*pf)(double*, int))

const double* f2(double arr)

const double* f3(double arr)

int main(void)

; const double* (*pf[3])(double*) = ;

cout << "address of f1 : " << f1 << endl;

cout << "address of f2 : " << f2 << endl;

cout << "address of f3 : " << f3 << endl << endl;

for (int i = 0; i < 3; i++)

cin.get();

return 0;

}

執行結果:

解讀以上的**,我們簡單的實現了函式指標陣列,首先我們輸出了函式本身的位址,大家可以**一下,為什麼最後面輸出值和位址有兩種形式,哈哈

C 之函式指標

總結 over 文末一句話 函式指標簡介 如果作為乙個屌絲程式設計師,未提到函式指標,則對c或c 函式的不尊重 函式與資料項相似,函式也有位址。函式的位址是儲存其機器語言 的記憶體的開始位址。通常,這些位址對使用者而言,既不重要,也沒有什麼用處,但是對程式而言,卻很有用。例如,可以編寫將另乙個函式的...

C 之函式指標

函式指標常用的有三類 1 指向普通函式的函式指標 2 指向類中靜態成員函式的函式指標 3 指向類的成員函式的函式指標 一 指向普通函式的函式指標 include using namespace std void show typedef void pfun 定義函式指標型別 intmain 二 指向...

C語言 指標之函式指標

一 函式指標的概念 二 函式指標的應用 1 呼叫函式 2 將函式的位址作為函式引數傳入其他函式。三 例項演示 函式指標的定義 若在程式中定義了乙個函式,編譯時,編譯器會為函式 分配一段儲存空間,這段空間的起始位址 又稱入口位址 稱為這個函式的指標。與普通變數相同,可以定義乙個指標指向存放函式 的儲存...