( variable = &anotherVar )的大小是多少?
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发布于 2012-03-24 12:47:11
未指定引用是否需要存储(C++11 8.3.2.4)
对于这种情况
int y = 10;
int & x = y;编译器可能不会使用任何额外的内存;它只会将x视为y的别名。一旦x被初始化,它就不能被重新赋值来引用另一个变量,所以编译器可以这样做。
如果引用被用作函数参数或在类/结构中使用,那么它可能会在内部作为指针实现,因此大小将为sizeof(int*)。当然,如果一个带有引用参数的函数是内联的,那么就不需要额外的内存。
发布于 2012-03-24 12:08:11
假设您讨论的是引用类型int&的物理大小,它几乎肯定与指针类型int*的大小相同,后者在现代体系结构(32位或64位处理器)上通常为4或8字节。
如果你想在你的编译器上测量它,使用这个:
struct Test { int& x; }
printf("%d\n", (int)sizeof(Test));还要注意,从技术上讲,您的编译器可能会填充Test结构并给出错误的答案,但这可能会很好地工作。
请注意,sizeof(int&)与sizeof(int)相同,如果int&是数据成员,它不会确切地告诉您它将使用多少空间。
发布于 2012-03-24 12:10:53
将sizeof应用于引用或引用类型的结果是被引用类型的大小。(C++ 03,5.3.3.2)
如果你的int是4字节(它不是必须的),那么引用也是4字节。
https://stackoverflow.com/questions/9849041
复制相似问题