[問題] 面試題目 - pointer

看板C_and_CPP (C/C++)作者 ( )時間14年前 (2011/09/23 09:59), 編輯推噓7(7017)
留言24則, 11人參與, 最新討論串1/2 (看更多)
題目: 給記憶體位址 "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
不是這個問題吧 這 0x123456789 是給 pointer 的
09/23 10:34, 3F

09/23 10:34, , 4F
誰管它裝不裝得進 long...
09/23 10:34, 4F

09/23 10:39, , 5F
但是我有疑問,可以直接把數值當位置嘛?
09/23 10:39, 5F

09/23 10:48, , 6F
而且long也不一定裝的下0x123456789吧
09/23 10:48, 6F

09/23 11:07, , 7F
「設定其值為0」<= 是設定怎樣型態的值為 0 呢XD
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
出題者可能還活在DOS的時代裡 ( ̄ー ̄;)
09/23 14:44, 10F

09/23 15:14, , 11F
不是吧,DOS的話你是要怎樣直接32-bit定址
09/23 15:14, 11F

09/23 15:15, , 12F
這題不管用什麼角度看都是錯誤的題目
09/23 15:15, 12F

09/23 15:15, , 13F
更正,他超過32-bit
09/23 15:15, 13F

09/23 15:17, , 14F
拿到64bit machine上面,以現代的OS和compiler
09/23 15:17, 14F

09/23 15:17, , 15F
你只會得到access error的結果吧XD
09/23 15:17, 15F

09/23 15:18, , 16F
還有如果在VC,long int是32 bit,要long long int才裝得下
09/23 15:18, 16F

09/23 15:19, , 17F
如果這個是面試的主管自己出的...還是不要去這家公司好了XD
09/23 15:19, 17F

09/23 15:26, , 18F
而且和原po說的一樣...pointer的size和type size無關
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
我補一下priv說的,long long int 要寫成..
09/23 17:43, 21F

09/23 17:43, , 22F
p=(long long int*)0x123456789LL;
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
文章代碼(AID): #1EU-Va-v (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1EU-Va-v (C_and_CPP)