关于声明中带星号的问题

Roy T 2006-05-08 08:01:51

以前用TC3.0的时候,可以有这样的声明

int *i;

可在VC2005中我发现只要有类似这样的声明,然后再使用的时候保证会弹出“该程序执行非法操作,即将被Windows关闭”,我想请那位高手帮我讲一下为什么,很浅显的就可以,谢谢。
...全文
226 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
share2006 2006-05-08
  • 打赏
  • 举报
回复
借用一下 tiandejian() 的程序来说明一下(俺比较懒,懒的写了)
#include <stdio.h>
int main()
{
int *i; //1
*i = 1; //2
printf("%d", *i);
return 0;
}

执行到2的时候应该会出问题,原因是很明显的,i是一个空指针呀,int *i是一个声明了,*i = 1;让计算机如何理解,写到内存中的什么地方呢?谁也不知道,所以计算机要报错了.
wanlyf 2006-05-08
  • 打赏
  • 举报
回复
i没有初始化
随便给i赋值就行了
就可以执行操作了
逸学堂 2006-05-08
  • 打赏
  • 举报
回复
#include <stdio.h>
int main() {
int *i;
int j = 1; // 修改
*i = j;
printf("%d", *i);
return 0;
}
vito_corleone 2006-05-08
  • 打赏
  • 举报
回复
我不知道vc 2005中是怎样的,但是我知道你的*i的使用是非法的,因为你在*i = 1;之前没有对i副值,在此之前它是指向一个未知的地址;
Roy T 2006-05-08
  • 打赏
  • 举报
回复
就好比

#include <stdio.h>
int main() {
int *i;
*i = 1;
printf("%d", *i);
return 0;
}

64,654

社区成员

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

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