要問一題題目
這一題我是都寫對
但總覺得哪裡不太對勁 而且解法不知對不對
想請教各位指點一下 謝謝!!
如下:
int *ptr,t1,t2,a[][3]={1,2,3,4,5,6,7,8,9,10,11,12};
ptr=&a[2][2];
t1=*ptr++; t2=*(ptr-3);
它題目是要問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
到這邊為止
這樣解法有沒有什麼地方不妥?還是有其他解法呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.166.160.228
※ 編輯: xfuns 來自: 218.166.160.228 (02/10 15:35)