一个怪异的问题。不明白

xuegao007 2008-04-20 02:22:33
void main()
{
char *p = "123.3";
char s[] = "123.3";
double t;
sscanf(p, "%lf", &t);
}
上面的一段代码在VC6.0下运行时有问题的。编译能通过,在运行时报C运行时错误!
如果给t初始化就能解决问题,不知道为什么。大家帮忙分析!
...全文
211 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
stick_li 2008-04-21
  • 打赏
  • 举报
回复
cvxcvxc
Fireway2008 2008-04-20
  • 打赏
  • 举报
回复
动态的方法赋值比较好,静态的分配对空间多少不合适
matrixdwy 2008-04-20
  • 打赏
  • 举报
回复
char *p = "123.3";
这个可以是可以
但是如果要输出p就有问题了
这个问题我也搞了很久
后来终于想明白,难道是因为p没有指向地址,所以对p赋值才会出错?
所以如果一定要这样,还是这样比较好;
char *p = new char[20];
p = "123";
也许是这样吧。。
herman~~ 2008-04-20
  • 打赏
  • 举报
回复
up 老大,vs2005 木有任何问题的
debug下也是正常的
Jinhao 2008-04-20
  • 打赏
  • 举报
回复
如果是DEBUG版的话,才会有这样的提示
晨星 2008-04-20
  • 打赏
  • 举报
回复
VC2005也没问题,VC6如果真是那么做的,可能有点自做多情了。
arong1234 2008-04-20
  • 打赏
  • 举报
回复
应该不算错误,这里不需要初始化。我想应该算系统误报
flyingpig4945 2008-04-20
  • 打赏
  • 举报
回复
定义变量的同时初始化,是一个很好的习惯:-)
不同的编译器对未初始化的变量处理方式不尽相同,因此不要依赖于实现(编译器)对程序的处理
Inhibitory 2008-04-20
  • 打赏
  • 举报
回复
GCC正常运行.
Jinhao 2008-04-20
  • 打赏
  • 举报
回复
VC的CRT在帮你做检查.发现在第一次使用t之前.你并没有对他初始化.这是错误的.

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧