[問題] 面試題目 - pointer
題目:
給記憶體位址 "0x123456789" 設定其值為0,請寫出其程式碼。
我是寫
int *p;
p = 0x123456789;
*p = 0;
但是答案是給
long *p;
p = (long*)0x123456789;
*p = 0;
我想問的是
他不是要assign 0 (整數type)
所以pointer是指向int 那我type用int *有錯嗎?
解答是解釋這題主要是考 溢位整數變數轉換常整數型 的問題
但是pointer不是無論如何(無論指向什麼型態) 他的大小都是4 bytes嗎?
所以int *跟long * 儲存的空間大小不是一樣嗎?
那怎麼會有什麼溢位的問題呢?
以上
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.51.107
※ 編輯: k0783154 來自: 140.112.51.107 (09/23 10:00)
推
09/23 10:29, , 1F
09/23 10:29, 1F
→
09/23 10:29, , 2F
09/23 10:29, 2F
推
09/23 10:34, , 3F
09/23 10:34, 3F
→
09/23 10:34, , 4F
09/23 10:34, 4F
→
09/23 10:39, , 5F
09/23 10:39, 5F
→
09/23 10:48, , 6F
09/23 10:48, 6F
推
09/23 11:07, , 7F
09/23 11:07, 7F
推
09/23 11:33, , 8F
09/23 11:33, 8F
→
09/23 11:55, , 9F
09/23 11:55, 9F
推
09/23 14:44, , 10F
09/23 14:44, 10F
→
09/23 15:14, , 11F
09/23 15:14, 11F
→
09/23 15:15, , 12F
09/23 15:15, 12F
→
09/23 15:15, , 13F
09/23 15:15, 13F
→
09/23 15:17, , 14F
09/23 15:17, 14F
→
09/23 15:17, , 15F
09/23 15:17, 15F
→
09/23 15:18, , 16F
09/23 15:18, 16F
→
09/23 15:19, , 17F
09/23 15:19, 17F
→
09/23 15:26, , 18F
09/23 15:26, 18F
→
09/23 15:27, , 19F
09/23 15:27, 19F
→
09/23 16:52, , 20F
09/23 16:52, 20F
這是這本書上面的題目啦
http://www.books.com.tw/exep/prod/booksfile.php?item=0010445260
我想應該是有很多誤刊的地方
所以結論是?
這個地址0x123456789 應該是裝不進 任何pointer的 (以32bit來說)
另外沒有人可以知道記憶體位址 然後還可以assign給某個pointer的 很怪
對了另外想問
目前電腦大多都已經64bit的了
那如果去面試還是會考32bit的考題嗎?以上謝謝大家的討論!
※ 編輯: k0783154 來自: 140.112.4.181 (09/23 17:04)
推
09/23 17:43, , 21F
09/23 17:43, 21F
→
09/23 17:43, , 22F
09/23 17:43, 22F
→
09/23 20:08, , 23F
09/23 20:08, 23F
推
09/27 03:03, , 24F
09/27 03:03, 24F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章
11
38