看板 Soft_Job 關於我們 聯絡資訊
※ [本文轉錄自 Examination 看板 #1FURfXvF ] 作者: malowda (malowda) 看板: Examination 標題: [考題] 中華電信101年計算機概論 時間: Mon Apr 2 22:40:31 2012 void f(int *p, int a[]){p=a;} void main() { int a[]={1,3,5,7}; int *p=&a[1]; f(p,a); p++; printf("%d",*(p)); } ANS:5 想法是p指向a的第一個位置也就是3 副程式中p=a是把a的第0個位置傳給p 主程式中的p和副程式中的p應該是指向同一個位置 都是a[0],然後p++應該是a[1] 原po的答案是3 請各位大大能夠幫幫原po我是那錯了 謝謝 ---------------- 這題小弟也是3 不知有沒高手可以開釋一下 還是答案錯了呢 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.252.184.168
hutzu:我也錯,後來覺得應該是f沒作用,因為沒丟指標進去...同swap 04/02 22:43
hutzu:應該要f(&p,a)...不然p=a的動作隨著function結束而回收 04/02 22:44
malowda:謝謝大大 04/02 22:47
aoi2501:f(&p,a)會error吧... 04/03 01:47
hutzu:沒問題...只不過參數宣告要變成void(int **p,int a[]) *p=a; 04/03 17:50
hutzu:這才是function有作用的寫法 樓樓上看看吧... 04/03 17:51
GoGoJoe:回到main()時,p這個指標變數(整數變數)就變回原來main() 04/03 21:28
GoGoJoe:中&a[1]的位址 http://bit.ly/HbpDXL 04/03 21:29
※ 發信站: 批踢踢實業坊(ptt.cc) ※ 轉錄者: idforask (220.131.17.141), 時間: 04/04/2012 14:58:16 ※ 編輯: idforask 來自: 220.131.17.141 (04/04 14:59)
blackwindy:先去弄清楚甚麼是call by value 04/04 15:36
blackwindy:不是死記就可以的...題目可以換 04/04 15:37
shemale:哈,我沒有上當,沒想到計概會出這種題目,中華電信很厲害 04/04 16:01
opcode:f()內的 p 沒有 dereference 04/04 16:02
leiyan:今年考的程式有些要念到才有辦法寫 像vector<>來做stack 04/04 16:14
shemale:程式用唸的?好像怪怪的,程式有實際寫過的話,不應不會做 04/04 16:31
leiyan:太久沒用到就會忘了 尤其是要用才去查就好的東西 04/04 16:39
shemale:那算是不夠熟練了,多寫多用到自然就一定會的 04/04 16:49
shemale:我工作面試時也是這樣呀,當場寫出來 04/04 16:49
ChonPiggy:答案是5嗎? 04/04 21:10
yudsx:答案是5沒錯 04/04 23:13
loveme00835:void main() 耶... 看到就不想寫 04/04 23:52
Neurontin:大一的計算機程式...Ans:5 04/05 01:05
bobju:這是考operator的意義,傳值與傳址的區別.不過粗心還是會被騙 04/05 10:41
bobju:,我也被騙了. X( 04/05 10:42
asleisureto:被騙+1 沒看清楚指標P本身也是區域變數真的會中計 04/05 15:20
cathychg: 瑪的 這演算法 swap 與河內塔內積 02/26 14:02
cathychg: 這考題超靈活der 02/26 14:02