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語言寫一個沒有main函數的程序嗎!
※明白函數這三者的關係,就能讀懂c語言的大部分了
※C語言模擬ATM自動櫃員機界面
※編寫xx管理系統,內有指導教程!
TAG:C加加 |