为什么这样会有问题

ariess 2005-12-05 11:01:19
#include <iostream.h>

int main()
{
int *i = 0;
cout << "*i = " << *i << endl;
cout << "i = " << i << endl;
return 0;
}

运行到cout << "*i = " << *i << endl;就报错了,请问是什么原因呢?难道只有这样写才对?
int m = 0;
int *i = &m;
cout << "*i = " << *i << endl;
cout << "i = " << i << endl;
return 0;

...全文
89 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
paddysunus 2005-12-08
  • 打赏
  • 举报
回复
混淆了指针的值与指针指向的地址的值这两个概念
PMsg 2005-12-05
  • 打赏
  • 举报
回复
int *i = 0
空指针
不是你想的i=0然后指向I的指针的意思
qimans 2005-12-05
  • 打赏
  • 举报
回复
注意: *i = 0 是让指针指向了地址 0 的地方
*i = 是访问了指针 i 所指向的内容(地址 0 的地方),访问非法了
就是说你不能访问内存地址 0 的内容,它不是你的
QuestionMark_zhang 2005-12-05
  • 打赏
  • 举报
回复
int *i = 0;
这句话是有特定的含义的,就是指针什么都不指向。并非是指向0的指针。
lzp229 2005-12-05
  • 打赏
  • 举报
回复
这两种完全不同啊。
int m = 0;//定义int型的m
int *i = &m;//定义指针i,把m的地址给i

上面的
int *i = 0;//定义指针i,把0赋给i,*i当然出问题。

64,652

社区成员

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

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