看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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
adrianshum:Q3 你解釋錯了吧 01/08 15:03
feasfeasf:Q3 int* p=a[0]; *p會指向錯誤的記憶體 01/08 15:14
feasfeasf:正確應該是 int* p=&a[0]; 01/08 15:15
Arton0306:沒注意到a[0]也是pointer,那就變成p與a[0]指向同處 01/08 15:18
Arton0306:這樣p+1後變 a[0]下一個位置 這會不會是筆誤 如3樓說的 01/08 15:20
stimim:a[0] 也有可能是 int* 的型態啊 int** a = ... 之類的 01/08 15:29
kkbbs:這是MTK題庫的考題吧 找一下精華區或google應該有答案 01/08 17:09
adrianshum:我說Q3解釋錯並不是在說型態。而是的確 Q3 是犯了十誡 01/09 22:35
adrianshum:之八。還有你所解釋的 postfix ++ 也不正確。postfix 01/09 22:36
adrianshum:++/-- 的語意並不是整個敍述完才做。 01/09 22:37
Arton0306:p被賦值2次 冏 說錯了 感謝糾正 01/10 09:44