作者dasung ()
看板Soft_Job
標題[請益] 請教各位高手
時間Thu Jan 7 17:05:59 2010
面試時被問到
int fun(int *a, int *b)
{
int *c;
*c=*a+*b;
return *c;
}
上述的程式哪邊有問題
一時之間整個恍掉=.=
請問各位高手這個程式哪邊有問題
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 112.104.8.86
1F:推 rodion:null pointer checking 01/07 17:07
2F:→ rodion:*c 可能造成crash 01/07 17:08
3F:→ dasung:拍謝 有點看不懂意思 可以白話點嗎 (感激不盡) 01/07 17:19
4F:→ final01:該重休了 01/07 17:23
5F:→ remmurds:a和b兩個指標都有可能會是null呀 老兄~ 01/07 17:28
6F:→ KevinGet:考慮多種可能CASE 就是這樣 01/07 17:46
7F:→ yulilee:改成int c; c=*a+*b; return c; 01/07 17:50
8F:推 gush0905:是c 沒有address吧~..5樓你是不是搞錯了.. 01/07 17:55
9F:→ iincho:...這...*c dereference的時候會死吧...XD 01/07 18:32
10F:→ remmurds:題目沒有說傳入的兩個指標是啥 所以第一步當然是先檢查 01/07 18:50
11F:推 Bencrie:c的內容未知 ... 可能會segfault或者改到別的東西 XD 01/07 19:46
12F:→ prag222:好難喔~考倒我了 01/07 22:03
13F:→ dasung:感謝大家的回答 我剛剛突然搞懂1F的大大在說啥 謝謝大家 01/07 23:06
14F:推 sjgau:c 是一個指標變數, 指向那裡 , 沒有定義,這樣會死的很難看 01/08 09:35
15F:推 gush0905:remmurds 不懂裝懂喔.. 01/08 13:21
16F:→ remmurds:那就說我哪裡說錯吧 當然c沒有address是一定的 可是ab呢? 01/08 13:29
17F:→ ledia:檢查傳入指標合不合法是基本的, 當然也有些為效率而不做的啦 01/08 13:32
18F:→ ledia:能答出檢查 *a *b 的, 應該比只有答 *c 改成 c 的更細心 01/08 13:34
19F:→ blair0:檢查完*a *b, *c還是有可能會是illegal阿 01/08 23:40
20F:推 flydragon198:int *c沒指定儲存在哪,會錯誤,改成int *c = new int 01/12 13:13
21F:→ flydragon198:也可以,或像yulilee大的,改成int c 01/12 13:15
22F:推 ledia:並不會因為檢查完還有可能會是 illegal 就不檢查吧 ?? 01/12 22:08
23F:→ yourdog:發現一堆人不懂裝懂... 03/20 20:54