首頁  >  文章  >  後端開發  >  C中如何宣告指向函數的指標?

C中如何宣告指向函數的指標?

青灯夜游
青灯夜游原創
2019-03-11 11:32:174646瀏覽

在C中,與普通資料指針(int *,char *等)一樣,也可以宣告指向函數的指針,即函數指針。那麼如何聲明?以下這篇文章就來帶大家了解一下宣告函數指標的方法,希望對大家有幫助。 【影片教學推薦:C語言教學

C中如何宣告指向函數的指標?

#如何宣告指向函數的指標?

首先我們了解如何在C中建立一個指向整數的指標?

int * ptrInteger; / *我们在int和ptrInteger之间放置了一个*运算符来创建指针。* /

這裡的ptrInteger就是一個指向整數的指標。如果可以理解這一點,那麼從邏輯上講,我們在聲明指向函數的指標時應該沒有任何問題了。

接下來讓我們來看看如何宣告一個函數?例如:

int foo(int);

這裡的foo就是一個回傳並接受一個int型別參數的函數。因此,邏輯上會被認為,只要在int和foo(int)之間放置一個*運算符就應該創建一個指向函數的指針,即:

int * foo(int);

但,這是不對的;因為, c運算子優先權在這裡也起作用,運算子()將優先於運算子*。上面的宣告意味著:一個函數foo,其中一個參數為int類型,傳回值為int *即整數指標;這不是我們想要的,所以我們還需要考慮c運算子優先權。

因此,我們必須以某種方式將*運算子與foo綁定。為此,我們將使用()運算子來更改C運算子的預設優先權。例:

int (*foo)(int);

*運算子與foo一起使用,而foo是函數名,這樣就宣告來一個指向函數的指標了。

函數指標的使用範例:

#include  
// 具有int参数和void返回类型的普通函数
void fun(int a) 
{ 
    printf("a值为: %d\n", a); 
} 
  
int main() 
{ 
    // fun_ptr 是指向函数fun()的指针
    void (*fun_ptr)(int) = &fun; 
  
    /* 相当于下面两行
       void (*fun_ptr)(int); 
       fun_ptr = &fun;  
    */
  
    //使用fun_ptr调用fun()
    (*fun_ptr)(10); 
  
    return 0; 
}

輸出:

C中如何宣告指向函數的指標?

說明:

1、與普通指標不同,函數指標指向程式碼,而不是資料。通常,函數指標會儲存可執行程式碼的開始。

2、與普通指標不同,我們不使用函數指標分配解除分配記憶體。

3、在函數指標中,函數的名稱也可用來取得函數的位址。

4、與一般資料指標一樣,函數指標可以當作參數傳遞,也可以從函數傳回。

以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。更多精彩內容大家可以追蹤php中文網相關教學欄位! ! !

以上是C中如何宣告指向函數的指標?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn