vc++和tc2.0对处理字符指针不同?

a_small_cell 2002-05-31 09:44:51
对下面这个代码,运行在tc2.0下编译和vc++编译,
对于指针p的输出不同,
请教高手~~为什么?

------------------------------------------
main()
{
int i;
char j;
char * p;
i='0';
j=i;
*(p) ='f';

printf("%d\n",i);

printf("%d\n",j);
printf("%c",p[0]);
return 0;
}
------------------------
TC2.0=> 48
48
f
---------------
Vc++6.0=>48
48
<空>
---------------
watch p,发现两种对于p的处理也不同?
why?
...全文
91 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ilovec39 2002-05-31
  • 打赏
  • 举报
回复
建议你先看看网上很流行的一本书《高质量C++编程》,改掉使用野指针的坏习惯先。
晨星 2002-05-31
  • 打赏
  • 举报
回复
你的p还没有分配空间就往里边写内容。
在*(p) ='f';前加上:
p = (char *)malloc(1);
前面#include <malloc.h>
z_sky 2002-05-31
  • 打赏
  • 举报
回复
不要多想了,你这种用法无论得到什么结果都是错的。指针在使用前必须先分配空间或使其指向一个有效空间。否则无内存保护的系统如dos虽可以使用,但用的内存可能是很重要的包括系统区,结果就难说了。如果是有内存保护的入win32,可能会非法错误,或无效赋值。这样讨论本身就没有什么意义。做好孩子,先 p = new char;给个内存空间
lanzhengpeng2 2002-05-31
  • 打赏
  • 举报
回复
厉害厉害!

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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