指针指向的类型为何不能随意改动!!

78815 2004-01-30 04:58:57
如题,好象有点不明白,有点知其然而不知其所以然的味道???
...全文
77 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
myte 2004-01-30
  • 打赏
  • 举报
回复
同意:dnawym(NoGame)和pacman2000(pacman)
我在VC6.0下经过了编译,错误如下:
1.redefinition;
2;p can be seen;

--------------------Configuration: Way - Win32 Debug--------------------
Compiling...
way.cpp
F:\C++study\chapter12\Way\way.cpp(9) : error C2371: 'p' : redefinition; different basic types
F:\C++study\chapter12\Way\way.cpp(6) : see declaration of 'p'
Error executing cl.exe.

way.obj - 1 error(s), 0 warning(s)
luoxiao_std01 2004-01-30
  • 打赏
  • 举报
回复
实在没办法的话,这样也是合语法的!
void* p = new int;
delete (int*)p;
p = new char;
delete (char*)p;
  • 打赏
  • 举报
回复
同意pacman2000(pacman)

delete p 只是释放p指向的内存空间,指针变量仍然存在

所以 只是定义一个指针,不给他赋值还是可以delete它
nck7 2004-01-30
  • 打赏
  • 举报
回复
楼主是不是没有打;号,呵呵。
pacman2000 2004-01-30
  • 打赏
  • 举报
回复
重复定义啊。p在上面已经定义过了。指向的内容释放掉不表示这个指针变量不存在啊。
mouseleeky 2004-01-30
  • 打赏
  • 举报
回复
重新定义自然可以了。
为什么楼主说不可以啊?
78815 2004-01-30
  • 打赏
  • 举报
回复
int *p=new int
delete p
char *p=new char

在这里,delete 已经把p指针给释放了,重新定义怎么也不行?
danny 2004-01-30
  • 打赏
  • 举报
回复
指针指向的是一个地址...

举个例子,若数组a的首地址为1000,设它为int型 ,a[3]的地址是1000+3*2,然后从1006地址所标志的整型单元取出元素的值,即a[3]的值....

但如果是实型就是1000+3*4,他就得从1012取出.....

你想如果随便改,指指还能指准吗?
inline 2004-01-30
  • 打赏
  • 举报
回复
当把指针定义为某种类型后!指针就对它指向的内存用这种类型进行解释!
指向其它类型需要用不同的解释方式!要用 reinterpret_cast 重新解释!
mwaterfall 2004-01-30
  • 打赏
  • 举报
回复
指针包含了一个对象的其始地址和如何解释该地址的内容。我觉得应该可以改动,但是在解释该指针所指的内容是就会出现问题。

65,182

社区成员

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

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