作者Arton0306 (Ar藤)
看板C_and_CPP
標題Re: [問題] 針對一些考題的疑問。
時間Sun Jan 8 12:39:54 2012
※ 引述《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