[問題] pointer in an embedded system

看板C_and_CPP作者 (.)時間14年前 (2011/07/09 10:56), 編輯推噓2(207)
留言9則, 3人參與, 最新討論串1/1
小弟在自修有關embedded的書 有一段不懂 想請問板上高手 //locate pointer 'a' to a physical address unsigned short * a = (unsigned short *) 0x7200005E; 可是如果平常我寫 int * x = int * y; 應該是代表 有一塊空間放了一個pointer x 指到另外一塊可以放int的空間 有一塊空間放了一個pointer y 指到另外一塊可以放int的空間 而ponter x和pointer y這兩個的空間為同一塊 所以x is an address equals to y, which also represents an address 也就是同一個存放int的那個address (我這個理解沒錯吧?) 套用我的理解 既然0x7200005E是一個實體位置 那為什麼他也是一個pointer? 我怎麼知道這個變數0x7200005E(常數?) 真的是指到register上面 0x7200005E這個地方? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 71.92.199.58 ※ 編輯: sean72 來自: 71.92.199.58 (07/09 11:01) ※ 編輯: sean72 來自: 71.92.199.58 (07/09 11:07)

07/09 11:09, , 1F
C++ 編譯器會要求 a 在初始化時,等號右邊的型態必須跟a相
07/09 11:09, 1F

07/09 11:10, , 2F
同,所以此處才對該位址,也就是那個數值常數做明確轉型
07/09 11:10, 2F

07/09 11:12, , 3F
如:當數值常數被強制轉型成int *後,則對該常數做+1會使
07/09 11:12, 3F

07/09 11:12, , 4F
值增加4;如果是 char * 就只使值增加1
07/09 11:12, 4F

07/09 12:05, , 5F
0x720005 是不是指標是看你怎麼用它吧
07/09 12:05, 5F

07/09 12:07, , 6F
你說它是數值就是數值, 說它是指標就要去該位置再讀一次值
07/09 12:07, 6F

07/09 14:05, , 7F
其實一個memory address也只是一個數值而已
07/09 14:05, 7F

07/09 14:06, , 8F
你可以寫 unsigned int *x = (unsigned int *)任意值;
07/09 14:06, 8F

07/09 14:06, , 9F
不過當使用 *x 的時候,就不一定是合法的了...XD
07/09 14:06, 9F
文章代碼(AID): #1E5yDw4H (C_and_CPP)