| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 772 人关注过本帖
标题:一个有趣的C++程序欢迎高手来探讨下!
只看楼主 加入收藏
超神级
Rank: 2
等 级:论坛游民
帖 子:16
专家分:14
注 册:2013-7-25
结帖率:100%
收藏
 问题点数:0 回复次数:7 
一个有趣的C++程序欢迎高手来探讨下!
图片附件: 游客没有浏览图片的权限,请 登录注册
程序代码:
#include <iostream>
using namespace std;
int  main()
{
    int *p1=new int;
    *p1=12;
    int *p2=new int;
     *p2=12;
    cout<<"(赋予p1指针的值)"<<*p1<<endl;
        cout<<"(12也有地址?)"<<p1<<"(地址是否一样)"<<&p1<<endl;
        cout<<"(测试2赋予p2指针的值)"<<*p2<<endl;
            cout<<"(测试2也有地址?)"<<p2<<"(测试2地址是否一样)"<<&p2<<endl;
    delete p1;
    delete p2;
    system("pause");
    return 0;
}

探讨问题一:
12为什么会有地址!?
探讨问题二;
程序的执行的步骤是什么怎么实现程序的!?
搜索更多相关主题的帖子: color 
2013-09-11 21:58
yss28
Rank: 2
等 级:论坛游民
帖 子:16
专家分:76
注 册:2013-3-16
收藏
得分:0 
程序代码:
/*--------------------------------------------------------
    你这段程序编译、连接成 .exe程序后,运行它,操作系统会把它加载到内存,并在内存中给它分配
相应的 代码空间、数据空间、堆栈空间(汇编常这样称呼)。
数据空间就包括了此程序中的 12、122、字符串常量(也就是此程序中 “” 包括的汉字 标点符号等);
堆栈空间就包括了此程序中的局部变量。比如你定义的指针*p1,*p2;
代码空间就是操纵此程序的一些汇编指令。
就这样吧,能理解不?这些细东西就得学汇编才好理解 

补充点:上面是操作系统分配的内存空间。而你在程序中使用new指向的内存地址是此程序请求的,所以你需要delete释放它
---------------------------------------------------------*/
#include <iostream>
using namespace std;
int  main()
{
    int *p1=new int;
    cout << p1 << ", " << &p1 << endl;
    // p1指针指向的动态内存地址; &p1表示此程序堆栈空间地址
    *p1=12;        // 把数据区的12复制到p1指向的动态内存
    int *p2=new int;
    cout << p2 << ", " << &p2 << endl;
    // p2指针指向的动态内存地址; &p2表示此程序堆栈空间地址(注意&p1-&p2=0000000C)
    *p2=122;
    cout<<"(赋予p1指针的值)" << *p1 << endl;
    cout<<"(12和122都有地址,在此程序的数据区)"<<p1<<"(地址不一样)"<<&p1<<endl;
    cout<<"(测试2赋予p2指针的值)"<<*p2 <<endl;
    cout<<"(测试2也有地址)"<< p2 <<"(测试2地址不一样)"<<&p2<<endl;
    delete p1;
    delete p2;
//    system("pause");
    return 0;
}


[ 本帖最后由 yss28 于 2013-9-11 23:10 编辑 ]
2013-09-11 23:05
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
12没有地址的话,你回答我一个问题
变量在计算机里面存在哪里???

程序执行步骤,你不会自己调试看看啊...

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-09-12 09:18
toofunny
Rank: 4
等 级:业余侠客
帖 子:71
专家分:200
注 册:2012-7-22
收藏
得分:0 
这么有趣啊。。。第二个问题恐怕你要学完计算机原理才能弄明白
2013-09-28 11:26
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
指针基本概念都没掌握,还说有趣

总有那身价贱的人给作业贴回复完整的代码
2013-09-28 11:32
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用embed_xuel在2013-9-28 11:32:39的发言:

指针基本概念都没掌握,还说有趣

渾人何其多,說也說不過來,隨他去吧。

授人以渔,不授人以鱼。
2013-09-28 12:10
mskeheng
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:48
专家分:179
注 册:2013-3-13
收藏
得分:0 
指针变量是变量,它在内存中也有地址的。。。。。。。。。。。。。。。。。。
多看看指针相关的内容吧。。。。
2013-09-28 20:00
lefeng_宇
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-10-2
收藏
得分:0 
#include"iostream"
using namespace std;
int main()
{
    int *p1=new int;
    cout<<&p1<<endl;
    *p1=12;
    int *p2=new int;
    cout<<&p2<<endl;
    *p2=12;
    cout<<"(赋予p1指针的值)"<<*p1<<endl;
    cout<<"(测试12也有地址?)   "<<p1<<"   "<<"(地址是否一样)  "<<&p1<<endl;
    cout<<"(测试2赋予p2指针的值)   "<<*p2<<"   "<<endl;
    cout<<"(测试2也有地址?)  "<<p2<<"   "<<"(测试2地址是否一样)  "<<&p2<<endl;
    delete p1;
    delete p2;
    system("pause");
    return 0;
}
这样就更容易了解了!!
2013-10-02 15:39
快速回复:一个有趣的C++程序欢迎高手来探讨下!
数据加载中...
 
   



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

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