當前位置:
首頁 > 知識 > C語言學習:C語言中指針函數與函數指針的詳解

C語言學習:C語言中指針函數與函數指針的詳解

不少人在學習C語言的過程中總是會把「指針函數」與「函數指針」搞混淆,為了讓大家更好的去理解這兩者之間的區別,今天在這裡整理了C語言中指針函數與函數指針的詳解,需要的朋友可以參考一下:

指針函數的定義:指針函數是指帶指針的函數,即本質是一個函數。函數都有返回類型(如果不返回值,則為無值型),只不過指針函數返回類型是某一類型的指針。

想要一起學習C++的可以加企鵝裙六四三三九二二二零,裙內有各種資料滿足大家,歡迎加裙

指針函數:返回值是一個指針

代碼示例:

int* add(int a, int b)

{

int *p = new int(0);

*p = a + b;

return p;

}

一個函數不僅可以帶回一個整型數據的值,字元類型值和實型類型的值,還可以帶回指針類型的數據,使其指向某個地址單元。

返回指針的函數,一般定義格式為:

類型標識符 *函數名(參數表)

int *f(x,y);

其中x,y是形式參數,f是函數名,調用後返回一個指向整型數據的地址指針。f(x,y)是函數,其值是指針。

函數指針

指向函數的指針包含了函數的地址,可以通過它來調用函數。聲明格式如下:

類型說明符 (*函數名)(參數)

其實這裡不能稱為函數名,應該叫做指針的變數名。函數類型 (*指針變數名)(形參列表);

「函數類型」說明函數的返回類型,由於「()」的優先順序高於「*」,所以指針變數名外的括弧必不可少,後面的「形參列表」表示指針變數指向的函數所帶的參數列表。

例如:

int (*f)(int x);

double (*ptr)(double x);

在定義函數指針時請注意:

函數指針和它指向的函數的參數個數和類型都應該是—致的;

函數指針的類型和函數的返回值類型也必須是一致的。

通過函數指針調用函數

函數指針是通過函數名及有關參數進行調用的。

與其他指針變數相類似,如果指針變數pi是指向某整型變數i的指針,則*p等於它所指的變數i;如果pf是指向某浮點型變數f的指針,則*pf就等價於它所指的變數f。同樣地,*f是指向函數func(x)的指針,則*f就代表它所指向的函數func。所以在執行了f=func;之後,(*f)和func代表同一函數。

由於函數指針指向存儲區中的某個函數,因此可以通過函數指針調用相應的函數。現在我們就討論如何用函數指針調用函數,它應執行下面三步:

首先,要說明函數指針變數。

例如:int (*f)(int x);

其次,要對函數指針變數賦值。

例如: f=func; (func(x)必須先要有定義)

最後,要用 (*指針變數)(參數表);調用函數。

例如: (*f)(x);(x必須先賦值)

不知道大家有沒有看懂呢,這下在學習arm的時候就不會搞混淆了吧!

arm中指針函數與函數指針的詳解就給大家介紹到這裡了,有自己更好的方法可以在下方評論處寫出你的見解,大家一起學習。需要哪方面的只是也可以通過評論告訴我,後續會不斷的給大家帶來精彩文章。

想要一起學習C++的可以加企鵝裙六四三三九二二二零,裙內有各種資料滿足大家,歡迎加裙

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 C加加 的精彩文章:

帶你走進C語言程序的世界
你會用C語言寫一個沒有main函數的程序嗎!
明白函數這三者的關係,就能讀懂c語言的大部分了
C語言模擬ATM自動櫃員機界面
編寫xx管理系統,內有指導教程!

TAG:C加加 |