C++引用这个类型占多少字节,究竟是指针大小还是所指内存空间大小,求解惑 15

#include<iostream>usingnamespacestd;structTeacher{chart=1;char&a=t;char&b=t;};intmain... #include <iostream>
using namespace std;

struct Teacher
{
char t = 1;
char &a = t;
char &b = t;
};
int main()
{

int a = 10;
int &t = a;

printf("%d %d %d", sizeof(int &), sizeof(char &), sizeof(struct Teacher));
getchar();
return 0;
}
上面代码得到的结果是 4 ,1, 12,假设sizeof(char &)求得的是对应空间的大小,前两个解释的通,那这样与结构体中char &矛盾,实际运行过程中查看内存时,发现结构体中存放的是成员t的地址,这样说来12又说得通,但这样两者就矛盾了。引用类型究竟是一种什么类型?有资料说可以看作是int *const p这样的常量型的指针,那大小前两个就又不对了,求大大解惑,感激不尽!
展开
 我来答
wanglixin1001
2015-07-21 · TA获得超过4173个赞
知道大有可为答主
回答量:1758
采纳率:80%
帮助的人:857万
展开全部
  1.  sizeof操作符应用在引用类型上的时候,返回的是包含被引用对象所需的内存长度(即被引用对象的大小)。所以前面2个分别为4和1。

  2. 结构体的sizeof并不是简单的sizeof各个数据成员再相加。涉及到字节对齐和填充字节。struct Teacher其中char t占1个字节。而char &a和char &b被解析成char *const pa和char *const pb这样的,分别占4个字节。所以char t填充3个字节。整个结构体12个字节。

参考这篇博客:http://www.blogjava.net/majianan/archive/2006/08/20/64664.html

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式