作者sysu (dancewithwho)
看板Soft_Job
標題Re: [心得] 程式設計師應該懂多少?
時間Mon Jun 29 13:14:53 2009
: Q: 下面這段程式有沒有什麼問題?
: void fun(int* ptr)
: {
: ptr = new int[2];
: }
: int main()
: {
: int *ptr = NULL;
: fun(ptr);
: ptr[1] = 1;
: ptr[2] = 2;
: printf("%d %d", ptr[1], ptr[2]);
: return 0;
: }
突然發現
這個題目我也不會!
換成是我的話
我會回答p[1]=1, p[2]=2這二行有問題
這個陣列可以這樣做嗎?
程式會出現問題
過去六年是白工作了
原來我也是不會C++的那一群
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.198.163
1F:→ blackj0311:ptr is still NULL in main() 06/29 14:24
2F:推 kenzou:題目就錯了,我會回答segmentation fault。 06/29 15:09
3F:推 neigence:只能說你運氣好 沒寫到會碰到這種問題的程式吧 06/29 16:33
4F:推 QQ29:改成 fun(int *&);就對了 06/29 19:58
5F:→ piss:如果現實有人寫這樣的code,應該很難maintain… 06/29 21:36
6F:推 khalid:這比較算是C吧 06/29 21:42
7F:推 y2k27:這種問題交給compile就好了 06/29 23:38
8F:推 Huangs:改成 fun(int *&) 還是錯。不能用到 p[2] 的位址 06/30 00:05
9F:→ Huangs:這種問題 compiler 不一定抓得出來啊 交給compiler?? 06/30 00:07
10F:推 y2k27:compiler抓不出來的蟲, 是寫的那個人有問題 06/30 00:45
11F:→ y2k27:硬要去抓這種蟲, 不如避免搞出這種蟲 06/30 00:46
12F:推 y2k27:這是兩個獨立的ptr, 指向同一個int array. 06/30 01:05
13F:→ y2k27:function call傳過去的是位址, 兩個指標是獨立 06/30 01:06
14F:推 xsion:1.這是純C 2.compiler抓不到,頂多會有warring 06/30 09:43
15F:→ lalawugaga:這不是純C.. C是沒有new的 06/30 10:52
16F:推 prag222:new是建立物件的方法 06/30 12:53
17F:推 kerickuo:這並不是純C 好嗎... 06/30 13:25
18F:推 joshux:fun(ptr)沒有改到ptr的值 ptr還是NULL 06/30 20:28
19F:推 Cloud:void fun(int** ptr){*ptr = new int[2];} 06/30 20:51
20F:→ Cloud:fun( &ptr); 其實這蠻常見的,compiler也不會幫你 06/30 20:52
21F:推 QQ29:[2]....竟然沒看到 真好笑= = 07/01 00:06