精華區beta Programming 關於我們 聯絡資訊
> ==>發信人: xfuns.bbs@ptt.cc (星), 信區: programming > 要問一題題目 > 這一題我是都寫對 > 但總覺得哪裡不太對勁 而且解法不知對不對 > 想請教各位指點一下 謝謝!! > 如下: > int *ptr,t1,t2,a[][3]={1,2,3,4,5,6,7,8,9,10,11,12}; ^這是 size , C 語言是 Row Majoring 從 0 開始到 2 a[0][0] \ 1 2 3 4 5 6 7 8 9 <---a[2][2] 10 11 12 > ptr=&a[2][2]; > t1=*ptr++; t2=*(ptr-3); ^^^ 先搬完 *ptr 後, ptr 才前進到下一個 element > 它題目是要問t1、t2=? > 我的解法: 真是這樣解釋是全錯, 但答案卻應該說是蒙上啦 ! > 因為a沒說是列優先還是行優先 > a陣列會有二種可能性 > 0 1 2 3 0 1 2 3 > 1 2 3 4 1 4 7 10 > ? 5 6 7 8 ? 2 5 8 11 > 9 10 11 12 3 6 9 12 > (列) (行) > ptr = a[2][2] 會有多種可能性(因為a的列值不確定為何?) > 在列優先裡因為不知2是哪一列 所以有可能為 3、7、11 的address(第2行所有值) > 在行... .. ... .. 7、8、9 ... ... > *ptr = 3、7、11 > 7、8、9 > 而t1=*ptr++ 所以 t1的值有可能為=5、9、13 ; 9、10、11 > 這題是選擇題 (a)7 (b)25 (c)45 (d)9 (e)none of above > 答案是(d)9 我t1是這樣算出來的 > 而t2=*(ptr-3); > ptr為指向3、7、11的address即 2、6、10 > 7、8、9 的address即 6、7、8 > 分別-3後 -1、3、7 > 3、4、5 > 所以t2的值可能為 3、4、5、7 > 這題選項和求t1的選項一樣 > 而答案是(a)7 > 到這邊為止 > 這樣解法有沒有什麼地方不妥?還是有其他解法呢? -- ◎ Origin: 中央松濤站□bbs.csie.ncu.edu.tw From: 140.115.6.234