| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 506 人关注过本帖
标题:有实力的来瞧瞧吧
只看楼主 加入收藏
上善若飞
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-11-24
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
有实力的来瞧瞧吧
请高手看一下,我在用红色那一行的时候,最后的紫色两行输出是不相等的
当我用蓝色那一行的时候,最后两行输出是相等的,也就出错的,我知道这肯定的数据类型的原因,但是至今没有在书上找到这一方面的说法,请详细指点,拜谢!

#include<iostream>
using namespace std;
void main()
{

   int *p=new int;
   cout<<"未赋值前的p的地址:\t"<<p<<endl;
   cout<<"未赋值前的*p:\t\t"<<*p<<endl;
   *p=3;
   cout<<"赋值后的p的地址:\t"<<p<<endl;
   cout<<"赋值后的*p:\t\t"<<*p<<endl;
   delete p;
  cout<<"释放后的p的地址:\t"<<p<<endl;
   cout<<"释放后的*p:\t\t"<<*p<<endl;
   double *p1=new double;
   //long *p1=new long;
   cout<<"创建p1后的p的地址:\t"<<p<<endl;
   cout<<"创建p1后的*p:\t\t"<<*p<<endl;
  cout<<"创建p1后的p1的地址:\t"<<p1<<endl;
   cout<<"创建p1后的*p:\t\t"<<*p1<<endl;
   *p1=999;
   cout<<"p1后的p的地址:\t\t"<<p<<endl;
   cout<<"p1后的*p:\t\t"<<*p<<endl;
  cout<<"p1后的p1的地址:\t\t"<<p1<<endl;
   cout<<"p1后的*p:\t\t"<<*p1<<endl;
   *p=23;
   cout<<"赋值后的p的地址:\t"<<p<<endl;
   cout<<"赋值后的*p:\t\t"<<*p<<endl;
   cout<<"赋值后的p1的地址:\t"<<p1<<endl;
   cout<<"赋值后的*p1:\t\t"<<*p1<<endl;
   delete p1;


}
搜索更多相关主题的帖子: 实力 
2010-11-28 16:29
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
收藏
得分:10 
图片附件: 游客没有浏览图片的权限,请 登录注册

p 没内存,你前面已经释放了它的内存
改法:
     去的 前面的 delete p;
后者
   换个变量 申请内存赋值为23

If You Want Something, Go Get It, Period.
2010-11-28 17:58
上善若飞
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-11-24
收藏
得分:0 
回复 2楼 m21wo
我不是问你哪错了,我知道哪错了,我要问的是为什么申明不同的数据类型 long 和double 就得出不一样的结果
2010-11-28 19:58
zgxyz2008
Rank: 4
等 级:业余侠客
帖 子:67
专家分:202
注 册:2008-10-28
收藏
得分:10 
没看懂楼主想问什么~不过可以解释下你的程序:
当你delete p之后,系统会释放掉p所指向的内存,但是p仍然指向这个地址空间,这时p就是所谓的野指针,释放掉的这段内存可以被其他代码用了。当你用new double(或new long)的时候,编译器便申请了新的内存给p1(这个内存具体是那段,就看编译器了,我们可理解为随机的一段),不过当你new long的时候,哈哈~编译器恰好把p指向的地址空间分配给了p1,所以你以后给*p,*p1赋值,结果会一样(指向同一个地址空间)。不信的话,你在new long代码之前,加上一段代码(必须含new 分配(堆上分配)如: int *x=new int ; *x=5;),他们就不一样了。
2010-11-28 20:03
上善若飞
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-11-24
收藏
得分:0 
回复 4楼 zgxyz2008
感谢这位朋友,可能是我表达能力不够好,还是谢谢你
2010-11-28 22:20
快速回复:有实力的来瞧瞧吧
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023556 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved