函式指標
最近看android camera 的source ,發現大量的call back ,www.cppcns.com多執行緒,有必要對其中的基礎 :函式指標複習一下,覺得函式指標主要還是用在call back 函式,以及多執行緒多程序程式設計中。函式在被編譯器編譯後就是一段二進位製碼,而這段二進位製碼有乙個入口位址,而這個入口位址就是函式指標的值了。
首先看函式指標的語法,舉乙個最簡單的例子,要建立乙個函式指標,則它與它指向的函式,在引數個數型別以及返回值上都保持一致,跟過載的要求應該是一樣的。
int a(int a )
int (* b)(int n) ; // 函式指標
b = a ; // 對函式指標進行賦值
// 也可以使用b = &a ; 可以列印a 和&a 的值,實際是相同的
// 也可以直接使用int (*b)(int b) = a ;
b(1) ; // 效果同a(1)
// 也可以使用(*b)(1) ,上面的方式是標準c++ 的,注釋中是為了相容c ,可以列印b 和*b 的值,實際是相同的。
另外和函式指標經常一起出現的就是typedef ,因為函式指標的括號實在太多,尤其涉及到類的成員的函式的時候,因此為了方便一般配合typedef 使用:
typedef int (*b)(int n) ;
b b1 ;
b1 = a ; // 相當於int (*b1)(int n) = a ;
在call back 中典型的就是將需要call back 的函式指標傳入,然後又呼叫函式根據函式指標call 程式設計客棧back 需要**的函式:
int func(b callback , int num)
另外除了平常單個函式指標外,還可以有函式指標陣列:
b array[10] = // 實際為int (*b[10])(int n) ; 比*優先順序高
array[0](1) ;
本文標題: 函式指標的一些概念詳解
本文位址:
函式指標和指標函式的一些事
先來說說如何宣告 函式指標的宣告 void f 指標函式的宣告 void f 指標函式這裡就不多說了,就是乙個返回型別為指標的函式,本質上就是乙個函式 函式指標是指向函式的指標,在linux核心裡面經常用到,我們知道c語言裡面的結構體是不能包括函式的,所以在c語言裡面想要運用到物件導向的思想的話就需...
C語言指標概念的一些見解
一級的指標 首先說一下指標的概念 拿int p來說,就是定義乙個指標,p指向一段記憶體空間,p的值為這塊記憶體空間的位址,這塊空間裡面存的是int型別的空間,也就是從位址的位置開始的四個位元組的記憶體上會存放int 型別的資料,而p的值永遠是位址,並且這個位址不會改變,使用p就可以訪問這塊記憶體空間...
函式指標陣列的一些用法
首先函式指標陣列是陣列,其次陣列裡面存放的是函式指標,函式指標又是什麼呢,函式指標是指向函式首位址的指標,我個人認為函式指標陣列可以批量像呼叫陣列元素一樣方便呼叫一些功能相似的一些函式 小弟愚見 我寫這個部落格之前就是遇到這個問題。首先介紹一下我遇到問題背景,想做個mini3216時鐘,顯示時間是用...