亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如下在main文件中:我知道里面涉及了指針,但是里面究竟是如何執行的?

如下在main文件中:我知道里面涉及了指針,但是里面究竟是如何執行的?

大話西游666 2022-05-06 12:07:07
touch.h里面的程序:typedef struct{u8 (*init)(void); //初始化觸摸屏控制器u8 (*scan)(u8); //掃描觸摸屏.0,屏幕掃描;1,物理坐標;void (*adjust)(void); //觸摸屏校準u16 x0; //原始坐標(第一次按下時的坐標)u16 y0;u16 x; //當前坐標(此次掃描時,觸屏的坐標)u16 y;u8 sta; //筆的狀態//b7:按下1/松開0;//b6:0,沒有按鍵按下;1,有按鍵按下.}_m_tp_dev;extern _m_tp_dev tp_dev; //觸屏控制器在touch.c里面定義u8 TP_Init(void);touch.c里面的程序:_m_tp_dev tp_dev={TP_Init,TP_Scan,TP_Adjust,0,0,0,0,0,};u8 TP_Init(void){······}在main文件中:tp_dev.init();我知道里面涉及了指針,但是里面究竟是如何執行的?使得 tp_dev.init();可以調用touch.c里面的u8 TP_Init(void)函數??大家幫幫忙,給指點一二。在此感謝了。
查看完整描述

2 回答

?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

tp_dev是一個結構體,init、scan都是他的結構體成員,這幾個成員的類型是函數指針,也就是說指向了一個函數,使用這個指針,就等于是函數調用。
所以當定義tp_dev的時候,init成員被你初始化為TP_Init, 也就是說tp_dev.init 就是指向了TP_Init()函數,所以你寫tp_dev.init(); 就等于調用TP_Init
_m_tp_dev tp_dev=
{
TP_Init,
...
}

同樣如果你tp_dev.scan(),就是調用TP_Scan

查看完整回答
反對 回復 2022-05-09
?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

tp_dev為外結構體變量,當變量被引用時,它必須時一個已經賦值(初始化)的變量,所以tp_dev.scan(0)被引用時,調用的時初始化了的函數指針scan()所指向的函數TP_Scan()

查看完整回答
反對 回復 2022-05-09
  • 2 回答
  • 0 關注
  • 172 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號