日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

函数指针史上最全的介绍

發(fā)布時(shí)間:2024/9/27 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 函数指针史上最全的介绍 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

函數(shù)指針

一. 函數(shù)指針的概念

如果在程序中定義了一個(gè)函數(shù),那么在編譯時(shí)系統(tǒng)就會(huì)為這個(gè)函數(shù)代碼分配一段存儲(chǔ)空間,這段存儲(chǔ)空間的首地址稱為這個(gè)函數(shù)的地址。而且函數(shù)名表示的就是這個(gè)地址。既然是地址我們就可以定義一個(gè)指針變量來(lái)存放,這個(gè)指針變量就叫作函數(shù)指針變量,簡(jiǎn)稱函數(shù)指針。

函數(shù)指針的定義方式可以如下表示:

函數(shù)返回值類型 (* 指針變量名) (函數(shù)參數(shù)列表);int(*p)(int, int);那么這個(gè)指針 p 就可以指向形如:int add(int a, int b);int get_info(int board, int module); 這樣類型的指針,形如:p = add;p = get_info;

我們進(jìn)行對(duì)函數(shù)指針進(jìn)行初始化的時(shí)候可以做如下操作:

  • 首先定義一個(gè)指針變量。

  • 將同類型的函數(shù)名賦值給它。

  • /* 定義函數(shù) */ int add(int a, int b) {return a + b; }int main() {// 方法一, 先定義再賦值int (*p1)(int, int);p1 = add;DH_INFO("%d\n", p1(3, 7));// 方法二, 同時(shí)定義賦值int (*p2)(int, int) = add;DH_INFO("%d\n", p2(3, 7)); }

    使用typedef定義函數(shù)指針

    在工程上,為了提高開發(fā)效率和代碼可讀性的問(wèn)題,通常會(huì)用typedef對(duì)函數(shù)指針進(jìn)行轉(zhuǎn)定義

    typdef 函數(shù)返回值類型 (*指針類型名) (函數(shù)參數(shù)列表);typedef uint32_t (*xxx_callback)(int cb_type);此時(shí),通過(guò)typedef轉(zhuǎn)定義的為指針類型名,相當(dāng)于數(shù)據(jù)結(jié)構(gòu),(從面相對(duì)象的角度來(lái)看可以稱為類) 可以用于新建(實(shí)例化一系列函數(shù)指針變量),形如:xxx_callback init_callback;xxx_callback move_callback;而此時(shí)根據(jù)實(shí)際不同業(yè)務(wù)模塊處理的不同,可以將實(shí)例化的函數(shù)指針變量賦值為不同模塊的函數(shù)。定義 uint32_t service_init_cb(int cb_type) { return 0; }賦值 init_callback = service_init_cb;使用 ret = init_callback(0);/* 實(shí)際代碼 */ typedef uint32_t (*xxx_callback)(int cb_type);uint32_t service_init_cb(int cb_type) { return cb_type; }int main() {/* 實(shí)例化函數(shù)指針 */xxx_callback init_callback;service_init_cb(3);init_callback = service_init_cb;init_callback(5); }

    函數(shù)指針作為函數(shù)入?yún)?/h3>

    在工程上,函數(shù)指針作為入?yún)?#xff0c;通常用于函數(shù)回調(diào)。

    int add(int a, int b) {return a + b; }int sub(int a, int b) {return a - b; }int get_result(int a, int b, int (*math_cal)(int, int)) {return math_cal(a, b); }int main() {int res1, res2;res1 = get_result(3, 2, add);res2 = get_result(3, 2, sub);printf("add_res = %d, sub_res = %d\n", res1, res2); }

    存放函數(shù)指針的數(shù)組

    函數(shù)返回值類型 (* 指針變量名[數(shù)組長(zhǎng)度]) (函數(shù)參數(shù)列表);int (*math_cal[2])(int, int); math_cal[0] = add; math_cal[1] = sub; for (int i = 0; i < 2; i++) {printf("Math cal %d res = %d\n", i, math_cal[i](3, 2)); }動(dòng)態(tài)申請(qǐng)( 還沒有研究,求指導(dǎo))使用typedef的模式: 定義函數(shù)指針數(shù)據(jù)類,利用該數(shù)據(jù)類常規(guī)實(shí)例化一個(gè)函數(shù)數(shù)組。 typedef uint32_t (*xxx_callback)(); xxx_callback g_cb_list[10]; int g_len; uint32_t xxx_callback_register(xxx_callback callback) {if(!callback) {printf("call back not exist");return -1;}g_cb_list[g_len++] = callback;return 0; }

    總結(jié)

    以上是生活随笔為你收集整理的函数指针史上最全的介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产麻豆天美果冻无码视频 | 久久久久久久久久久网 | 视频在线播 | 成年人网站免费在线观看 | 在线观看免费观看 | 黄色一级视频免费观看 | 欧美最猛性xxxx | 精品久久国产视频 | 日本激情久久 | 日韩一级大片 | 日本h在线观看 | 波多野结衣一二三四区 | 男人天堂b| 亚洲骚片 | 欧美日韩一区二 | 德国老妇性猛交 | 日韩精品第一 | 亚欧在线播放 | 国产一区二区三区小说 | 亚洲理论在线观看 | 人人草人人插 | 亚洲综合精品视频 | 人妻无码一区二区三区免费 | 国产资源在线视频 | 在线一区观看 | 国产精品久久久久久久久久久久 | 九九超碰 | 天天爽夜夜爽夜夜爽精品视频 | 男生和女生一起差差差很痛的视频 | 国产精品久久777777 | 色无极亚洲色图 | 黄色片女人 | 亚洲欧美国产一区二区三区 | 久久国产精品视频 | 少妇与公做了夜伦理 | 天天干天天做 | 黄色免费版| 图书馆的女友动漫在线观看 | 久久精品蜜桃 | 久久久老熟女一区二区三区91 | 五十路母| 高h喷水荡肉少妇爽多p视频 | 免费国产一区二区三区 | 在线高清观看免费 | 女人高潮被爽到呻吟在线观看 | 国产在线观看av | 亚洲综合自拍 | 四虎影视www在线播放 | 亚洲一区二区三区四区在线 | 亚洲国产大片 | 狠狠操一区 | 林天顾悦瑶笔趣阁 | 五月天色站 | 亚洲字幕av一区二区三区四区 | 欧美成人极品 | 91日本在线观看 | 国产wwwwwww | 成年人在线视频观看 | 国产伦精品一区二区三区 | 欧美s码亚洲码精品m码 | 日韩αv| 欧美啊v | 午夜之声l性8电台lx8电台 | 日韩二区三区四区 | 台湾av在线播放 | 国产精品永久免费观看 | 国产高清不卡视频 | 国产最新av| 思思久久久 | 天天干夜夜夜夜 | 91丨porny| 亚洲国产中文字幕 | 欧美一级黄色大片 | 久久调教视频 | 婷婷导航 | 一区二区在线视频免费观看 | 亚洲欧美中文日韩在线v日本 | 福利在线看 | 婷婷丁香花五月天 | 国产妇女馒头高清泬20p多 | 日韩精品一区二区三区四区 | 国产九色av | 欧美在线网站 | 精品一区二区三区入口 | 亚洲一区二区三区四区在线播放 | 在线男人天堂 | 在线一级片 | 国产高清无密码一区二区三区 | 不卡av一区二区 | 青青草原在线免费观看视频 | 瑟瑟综合| 亚洲二区中文字幕 | 亚洲香蕉av | 色呦呦在线看 | 豆花在线观看 | 日韩av成人| 91视频影院 | 另类毛片 | 国产剧情一区 |