C++中 指针赋值后 exe程序无法运行
我在Win8中 使用codeblock编写了一段程序。使用的是GCC 4.7 & 4.8 编译器:
#include <iostream>
using namespace std;
int main()
{
int *i=0;
cout<< "Hello world!" << endl;
return 0;
}
程序可以运行,输出:Hello world。很奇怪的是一旦加入指针赋值语句,编译组建通过,但无法运行。
int main()
{
int *i=0;
*i = 9;
cout<< "Hello world!" << endl;
return 0;
}
控制台上显示为:
Process returned -1073741819 (0xC0000005) execution time : 1.453 s
使用VC++ 6.0 出现了同样的现象
在百度上也没搜到结果。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这个语句是相当于把
int*
的指针变量 i 赋值为0,而不是将int*
的指针 i 指向 0这个常量所在的内存地址,也就是相当于是这样的代码:而不是
你的理解是不是这样的?@changqngd
刚才运行了几次又想了一下,终于想通了。
错在:
int *i=0; //这里给指针赋了一个空地址
//*i是空地址指针,不能使用*i = 9;
改为如下就正确了: