Re: [問題] 針對一些考題的疑問。

看板C_and_CPP作者 (Ar藤)時間12年前 (2012/01/08 12:39), 編輯推噓2(209)
留言11則, 5人參與, 最新討論串2/6 (看更多)
※ 引述《ariesd ()》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : linux : 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) : 無 : 問題(Question): : 有些考題上的疑問,希望可以幫忙解惑。 : 以下只寫重點。 : Q1."volatile"可以用在指標上嗎? : 我知道"volatile"作用,但不確定能否用在指標上。 : Q2.寫一個檢查輸入為3倍數的函數,但不能使用除法和餘數。 : 除了使用 : while(input>2){input-=3 check=input}if(check)... : 這種算法外,還有更好的算法嗎? 這方法不錯了 不然利用3倍數的特性 寫一個function 把原數字轉字串後取出每個位的數字 求和 看是否大於9 是的話 recursive 不是的話 若數字是0 3 6 9那就是3倍數 : Q3. ... : int *p=a[0] : *(p++)+=123; : 這有違反十三誡中的未定義行為吧。 沒有 ++是整個敘述完才做 a[0]會加上123 接著p指向&a[1] : Q4.Re-write : void(*(*papf)[3])(char *); : typedef__________; : pf(*papf)[3]; : 只知道函式指標和typedef基本用法,但看不太懂題目。 : 餵入的資料(Input): : 預期的正確結果(Expected Output): : 錯誤結果(Wrong Output): : 程式碼(Code):(請善用置底文網頁, 記得排版) : 補充說明(Supplement): 參考 #1EkLIycp papf is a pointer to array of pointer to function return void 考題是要你填空 最後一行有個pf未定義 所以是要定義這一個 papf is a pointer to array of pf 所以pf is a pointer to function return void typedef void(*pf)(char *); 有錯請指正 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.140.149

01/08 15:03, , 1F
Q3 你解釋錯了吧
01/08 15:03, 1F

01/08 15:14, , 2F
Q3 int* p=a[0]; *p會指向錯誤的記憶體
01/08 15:14, 2F

01/08 15:15, , 3F
正確應該是 int* p=&a[0];
01/08 15:15, 3F

01/08 15:18, , 4F
沒注意到a[0]也是pointer,那就變成p與a[0]指向同處
01/08 15:18, 4F

01/08 15:20, , 5F
這樣p+1後變 a[0]下一個位置 這會不會是筆誤 如3樓說的
01/08 15:20, 5F

01/08 15:29, , 6F
a[0] 也有可能是 int* 的型態啊 int** a = ... 之類的
01/08 15:29, 6F

01/08 17:09, , 7F
這是MTK題庫的考題吧 找一下精華區或google應該有答案
01/08 17:09, 7F

01/09 22:35, , 8F
我說Q3解釋錯並不是在說型態。而是的確 Q3 是犯了十誡
01/09 22:35, 8F

01/09 22:36, , 9F
之八。還有你所解釋的 postfix ++ 也不正確。postfix
01/09 22:36, 9F

01/09 22:37, , 10F
++/-- 的語意並不是整個敍述完才做。
01/09 22:37, 10F

01/10 09:44, , 11F
p被賦值2次 冏 說錯了 感謝糾正
01/10 09:44, 11F
文章代碼(AID): #1F2HuS4v (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1F2HuS4v (C_and_CPP)