找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 3125|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

C語言函數(shù)指針的探索

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:51337 發(fā)表于 2013-7-31 01:31 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
一談到C語言,很多學(xué)過編程的同學(xué)會感覺比較容易。但是談到C語言的指針,大多數(shù)的同學(xué)就不這么認為了,但是當(dāng)談到函數(shù)指針時,很多在校的同學(xué)更是望而卻步。今天就來探索一下函數(shù)指針的使用:
用過Visual studio的同學(xué)一定會對微軟的自動提示功能大為驚嘆,編寫C語言有沒有好的工具呢,答案是肯定的。向大家推薦一款Source Insight軟件,使用方法大家自己摸索。
1.函數(shù)指針的聲明,初始化與調(diào)用

從這里大家可以看出,函數(shù)指針其實并沒有什么神奇的地方,與int *型的整型指針并無差異。需要說明的是:對于函數(shù)的函數(shù)名其實就是一個地址,所以h = &welcome也可以寫為
h = welcome,一般都是這樣應(yīng)用,在上面只是為了做對比。
2.函數(shù)指針作為形參回調(diào)函數(shù)的實現(xiàn)
我們知道int *指針可以作為函數(shù)的參數(shù)進行傳遞并參與運算,但函數(shù)指針可不可以作為函數(shù)的參數(shù)進行傳遞呢?下面以一個比較實用的單片機常見的例子按鍵處理函數(shù)為大家講解一下函數(shù)指針作為形參的應(yīng)用。在這里為了讓大家看到效果,將button定義為0



//按鍵處理函數(shù)

//主函數(shù)


3.實用typedef定義函數(shù)指針
上面我們使用了void (*handler)(void) 作為參數(shù)進行傳遞,我們可以實用typedef定義這個函數(shù)指針,使程序更加簡潔。
改動的地方如圖所示,效果上同,請自己測試。
修改的地方
4.綜合例子
使用struct結(jié)構(gòu)體和函數(shù)指針結(jié)合實現(xiàn)模塊化編程的封裝
希望對大家有所啟發(fā)。
例子如下:
led.c的內(nèi)容如下:
led.h的內(nèi)容如下:
Main.c的內(nèi)容如下:
                                                 Main.c part1
                                                        Main.c part2
運行結(jié)果:
   
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表