[問題]C/C++程式指標應用問題

作者: puddingDD (布丁弟弟)   2012-09-06 23:14:25
小弟是社會新鮮人
上班之後才發現程式的不足
特別是指標的應用,我所知道的指標只停留在 基本的指標概念
#define output(port,value) *((volatile unsigned int *)(port))=(value)
1.我的解讀是:定義一個函式, 輸入參數為port及value,函式內容為把value的值存入port
變數中,這樣解讀對嗎?
2.我已經被*及括號搞的不知道怎麼回事,可以解釋一下此定義中用的括號及*的來龍去脈
嗎?
3.求學階段常用程式模擬系統,所以程式的迴圈 判別 變數宣告 副程式 運算 都沒有問題
,唯獨沒接觸到指標,是否可以推薦一本指標進階易懂的書,給小弟我學習?
非常感謝大大們的幫助!!
作者: jackace (inevitable......)   2012-01-04 10:15:00
我覺得應該先把define跟定義函式的不同搞清楚
作者: CindyLinz (Cindy Wang)   2012-09-06 23:40:00
第一個 * 是「取值」, 第二個 * 是描述 type 的一部分
作者: puddingDD (布丁弟弟)   2012-09-06 23:52:00
*(volatile unsigned int *port)=value 這樣寫可以嗎?(volatile unsigned int *)及(port)和(value)的括號都是必要的嗎?
作者: james732 (好人超)   2012-09-07 09:26:00
我很想回覆但覺得你問錯板了XDDD
作者: tomnelson   2012-09-08 00:57:00
他是問錯板了,該去C/C++板問...
作者: puddingDD (布丁弟弟)   2012-09-08 00:57:00
謝謝回答~我已經懂了!!
作者: tomnelson   2012-09-08 00:58:00
這就是memory-mapped I/O的port output方式用C語言寫,這在一些底層程式(driver/firmware...)中常看到.
作者: jaiyalas (銀河鐵道囧囧囧)   2012-09-10 18:24:00
一樓的帳號真是有夠眼熟XD
作者: godfat (godfat 真常)   2012-09-11 03:17:00
樓上想把歡樂帶來這裡嗎? XD
作者: jaiyalas (銀河鐵道囧囧囧)   2012-09-11 13:15:00
為什麼不? XD
作者: godfat (godfat 真常)   2012-09-12 01:07:00
沒有不,只是覺得好像有難度而已 XD

Links booklink

Contact Us: admin [ a t ] ucptt.com