问下gcc查指针初始化的问题

bulver 2012-05-26 11:02:28
下面这段代码指针没有初始化但是在gcc下面运行通过了,是用的CodeBlock里的gcc编译器,在VS2010里面是报错的。一般来说都应该报错吧,麻烦大家在你们的环境下运行看看是什么情况。
#include <iostream>
#include <cstring>
#include <cstdio>

using namespace std;

int main()
{
char str[30];
char* ps;
cin >> ps;
cout << ps;
return 0;
}
...全文
148 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq120848369 2012-05-27
  • 打赏
  • 举报
回复
int main()
{
char str[30];
char* ps;
cin >> ps;
cout << ps;
return 0;
}

ps没有分配过内存,怎么可以cin呢。
bulver 2012-05-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

这个和你使用的编译器版本 命令行有关

我觉得会有个警告

vc2010应该也是警告而不是错误

除非用把警告识别为错误的编译开关

类似的,gcc使用-Wall -Werror才会报错
[/Quote]

vc编译器没错误,但是运行时会挂掉,gcc居然可以直接运行出结果啊…
bulver 2012-05-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

codeblocks,g++版本为4.6.2,会有警告
[/Quote]

是的,有个警告
xunxun 2012-05-27
  • 打赏
  • 举报
回复
这个和你使用的编译器版本 命令行有关

我觉得会有个警告

vc2010应该也是警告而不是错误

除非用把警告识别为错误的编译开关

类似的,gcc使用-Wall -Werror才会报错
昵称很不好取 2012-05-27
  • 打赏
  • 举报
回复
codeblocks,g++版本为4.6.2,会有警告
bulver 2012-05-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

int main()
{
char str[30];
char* ps;
cin >> ps;
cout << ps;
return 0;
}

ps没有分配过内存,怎么可以cin呢。
[/Quote]

是啊,所以我才奇怪啊,CodeBlock里的gcc版本运行没任何错误,可以cin字符串也可以原样cout....

65,187

社区成员

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

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