24小时热门版块排行榜    

CyRhmU.jpeg
查看: 897  |  回复: 6
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

martialvv

铁虫 (初入文坛)

[求助] 请问下面这段c++小程序为什么不能运行已有2人参与

int a = 10; float b = 20;

int *p=new int(a);
cout<<"the pointer to a is "<<*p<<endl;
delete p;
float *p = new float(b);
cout<<"the pointer to b is "<<*p<<endl;
delete p;

我已经把指向a的指针p删掉了,为什么不能再用p来命名指向b的指针呢?
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

Boncourage!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

匿名

用户注销 (文坛精英)


感谢参与,应助指数 +1
ben_ladeng: 金币+1, 谢谢指教 2014-10-05 10:57:19
本帖仅楼主可见
5楼2014-09-25 14:44:30
已阅   申请程序强帖   回复此楼   编辑   查看我的主页
查看全部 7 个回答

zzy滴号

金虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
martialvv: 金币+15 2014-09-25 15:14:32
因为c++程序在编译时要建立一个符号表(可以认为是存储变量基本信息的表), 此时不会分析程序的运行情况, 只是单纯的按字符名字来处理. 所以你的代码中有两个p变量,但在符号表中只会存在一个与p相关的表项,编译器不能确定你到底要把p定义成什么变量,就报错了.
天道酬勤
2楼2014-09-24 22:18:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

martialvv

铁虫 (初入文坛)

引用回帖:
2楼: Originally posted by zzy滴号 at 2014-09-24 22:18:32
因为c++程序在编译时要建立一个符号表(可以认为是存储变量基本信息的表), 此时不会分析程序的运行情况, 只是单纯的按字符名字来处理. 所以你的代码中有两个p变量,但在符号表中只会存在一个与p相关的表项,编译器不能 ...

谢谢。那有没有方法从那个表里先把p删除,然后再用他定义别的变量?我是说比较简单易行的方法,比如只用一个运算符做这个事情。还是只能用不同的名字命名?
Boncourage!
3楼2014-09-25 02:08:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zzy滴号

金虫 (小有名气)

引用回帖:
3楼: Originally posted by martialvv at 2014-09-25 02:08:30
谢谢。那有没有方法从那个表里先把p删除,然后再用他定义别的变量?我是说比较简单易行的方法,比如只用一个运算符做这个事情。还是只能用不同的名字命名?...

应该没办法,因为C++编译器是一个独立的软件,一般人更改不了,而这个表是编译器产生的。
天道酬勤
4楼2014-09-25 12:36:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见