作者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