| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 657 人关注过本帖, 1 人收藏
标题:0和NULL的问题
只看楼主 加入收藏
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:709
专家分:2063
注 册:2010-11-11
结帖率:96.55%
收藏(1)
已结贴  问题点数:20 回复次数:13 
0和NULL的问题
有一个ValNode类,有两个构造函数,一个接受长整型,另一个接受指向字符串的指针。但在主函数中如果有这样的语句,ValueNode num; num = 0;则会变异出错。猜测是0和空指针发生冲突,请问如何处理。不想大动干戈来改用string类,也不想在0之前加 (unsigned long long)之类的东西,怕以后忘了。
搜索更多相关主题的帖子: 如何 字符串 
2011-08-10 14:30
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:709
专家分:2063
注 册:2010-11-11
收藏
得分:0 
但如果把0改为其他的值则编译通过。
2011-08-10 14:31
jcw08120110
Rank: 8Rank: 8
来 自:南京
等 级:蝙蝠侠
帖 子:272
专家分:742
注 册:2009-6-8
收藏
得分:5 
都可以用不过我建议你多用0少用NULL他们是等价的;
你可以定义一个 const int NULL = 0;然后放心得使用 NULL;

君生我未生 我生君以老
2011-08-10 14:48
xg5699
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:140
专家分:522
注 册:2011-7-27
收藏
得分:0 
错误报告是什么?
ValueNode num; num = 0;
将num赋值为0我觉得应该是调用ValueNode 类中的带一个参数的构造函数
即ValueNode(long );
不知道你那个带一个参数的构造函数里面是什么东东了

[ 本帖最后由 xg5699 于 2011-8-10 15:23 编辑 ]

都不结贴我郁闷那!
2011-08-10 15:03
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:709
专家分:2063
注 册:2010-11-11
收藏
得分:0 
我只不过是举个具体的例子。我是想问,如果0和空指针相互发生冲突的时候,也就是说有代码 =0; 编译器提示可能会认为是空指针时,如何修改程序?
2011-08-10 16:38
xg5699
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:140
专家分:522
注 册:2011-7-27
收藏
得分:0 
回复 5楼 八画小子
发一个简单点的程序具体说明下,不然不能理解你的意思.

都不结贴我郁闷那!
2011-08-10 17:50
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:709
专家分:2063
注 册:2010-11-11
收藏
得分:0 
设计了一个ValueNode类,其中有两个构造函数
ValueNode(const char * v);和
ValueNode(const unsigned long long x);。
在主函数中有这样几句
ValueNode num;
num = 0;
这是编译不通过,但如果把0换成其他的正值却是可以的。
2011-08-10 20:38
xg5699
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:140
专家分:522
注 册:2011-7-27
收藏
得分:5 
回复 7楼 八画小子
你不把错误或者整个代码发出来怎么能知道错误?
你不清楚定义的对象=0;是调用哪个带参的构造函数你可以做测试
在2个带参的构造函数中添加输出语句,比如
ValueNode(const char * v){cout<<"运行了char构造函数";}和
//ValueNode(const unsigned long long x){cout<<"运行了long构造函数";}
自己调试一下在 ValueNode a;a=0;就只运行这2句,看看可不可以运行,不行在
//ValueNode(const char * v){cout<<"运行了char构造函数";}和
ValueNode(const unsigned long long x){cout<<"运行了long构造函数";}
哪个不能通过就看看哪个程序里有什么问题


都不结贴我郁闷那!
2011-08-10 21:36
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:606
专家分:2499
注 册:2009-4-8
收藏
得分:5 
(char*)0
0L
这是指对你提出的问题的解决方法,编译时出现二义就指明它的类型是什么。

迭代的是人,递归的是神。
2011-08-10 22:09
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:709
专家分:2063
注 册:2010-11-11
收藏
得分:0 
还是9楼和其他的人才是真正的高手,一眼就看出问题的关键,不像8楼的,尽说些无关紧要的问题,还说什么要发代码。
但我是不想在0的前面或后面加些东西,要不以后很难维护代码。万一哪次忘了应该加东西,那就麻烦了,还很难找出问题的所在。
请问有没有解决办法?
2011-08-10 23:11
快速回复:0和NULL的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017229 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved