首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >( variable = &anotherVar )的大小是多少?

( variable = &anotherVar )的大小是多少?
EN

Stack Overflow用户
提问于 2012-03-24 12:01:54
回答 5查看 165关注 0票数 1

( variable = &anotherVar )的大小是多少?

代码语言:javascript
运行
复制
int y = 10; // the size of y is 4 bytes
int & x = y; // what is the size of x that receives the address of y
EN

回答 5

Stack Overflow用户

发布于 2012-03-24 12:47:11

未指定引用是否需要存储(C++11 8.3.2.4)

对于这种情况

代码语言:javascript
运行
复制
int y = 10;
int & x = y;

编译器可能不会使用任何额外的内存;它只会将x视为y的别名。一旦x被初始化,它就不能被重新赋值来引用另一个变量,所以编译器可以这样做。

如果引用被用作函数参数或在类/结构中使用,那么它可能会在内部作为指针实现,因此大小将为sizeof(int*)。当然,如果一个带有引用参数的函数是内联的,那么就不需要额外的内存。

票数 4
EN

Stack Overflow用户

发布于 2012-03-24 12:08:11

假设您讨论的是引用类型int&的物理大小,它几乎肯定与指针类型int*的大小相同,后者在现代体系结构(32位或64位处理器)上通常为4或8字节。

如果你想在你的编译器上测量它,使用这个:

代码语言:javascript
运行
复制
struct Test { int& x; }
printf("%d\n", (int)sizeof(Test));

还要注意,从技术上讲,您的编译器可能会填充Test结构并给出错误的答案,但这可能会很好地工作。

请注意,sizeof(int&)sizeof(int)相同,如果int&是数据成员,它不会确切地告诉您它将使用多少空间。

票数 3
EN

Stack Overflow用户

发布于 2012-03-24 12:10:53

将sizeof应用于引用或引用类型的结果是被引用类型的大小。(C++ 03,5.3.3.2)

如果你的int是4字节(它不是必须的),那么引用也是4字节。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9849041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档