| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 375 人关注过本帖
标题:c++,main函数中,对象对象中的成员和普通变量地址是怎么分配的
只看楼主 加入收藏
wmg_123
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-12-26
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
c++,main函数中,对象对象中的成员和普通变量地址是怎么分配的
#include<iostream>
#include<stdio.h>
using namespace std;
class A{
public:
    int i;
    int k;
public:
    int hello(){cout<<"hello\n";return 0;}
    A(int n,int m){i=n;k=m;};
};
int *f1(int j)
{
    printf("%d\n",j);
}
int main(void)
{
    int h=0;
    printf("%p\n",&h);
    A a(1,2);
    A *p=&a;
//输出对象a的地址
    printf("%p\n",&a);
//输出对象a中成员i,k地址
    printf("%d,%p,%d,%p\n",p->i,(void*)p->i,p->k,(void*)p->k);   
//main函数中普通函数的地址   
    int *qq;
    qq=f1(1);
    printf("%p\n",qq);
    printf("%p\n",(void*)p->hello());
}
搜索更多相关主题的帖子: public include return hello 
2012-12-26 20:40
wmg_123
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-12-26
收藏
得分:0 
这是得到的结果
0xbfb0e1bc
0xbfb0e1c8
1,0x1,2,0x2
1
0x2
hello
(nil)
2012-12-26 20:41
wmg_123
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-12-26
收藏
得分:0 
可以看到main中变量i和对象a的地址是有关系的
i        0xbfb0e1bc
a        0xbfb0e1c8
对象a中的数据成员i,k地址连续
i        0x1
k        0x2
但是为什么函数f1的地址也显示是0x2?
2012-12-26 20:44
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:20 
看过你的代码和问题,很憋屈

2012-12-27 08:51
wmg_123
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-12-26
收藏
得分:0 
回复 4楼 rjsp
为什么这么说啊,是我不应该这么看问题么
2012-12-27 09:10
wmg_123
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-12-26
收藏
得分:0 
回复 4楼 rjsp
我主要是想弄明白对象和一般变量的地址、对象的数据成员地址的关系,然后发现main中的一般函数的地址让我不理解了
2012-12-27 09:14
快速回复:c++,main函数中,对象对象中的成员和普通变量地址是怎么分配的
数据加载中...
 
   



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

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