C++中引用占不占内存
(2018-09-25 08:32:22)| 分类: c及c_plus_plus |
在C 中我们说“引用不占内存”是从C
程序员的角度来看。请看下列程序的运行结果。
#include < iostream
>
using namespace
std;
int main(int argc, char**
argv)
{
}
运行结果为:
Result :
显然,对于引用变量k来说,sizeof(k)的结果为8,sizeof(m)的结果为1,这样的结果实际是被引用对象所占内存的大小,k引用的是double类型,所以占8个字节;m引用的是char类型,所以占1个字节。这与指针变量完全不同,从运行结果可以看出,不论指针变量指向的数据类型是什么,指针变量(p、q)均占用4个字节。进一步可以用C
程序证明,对于引用变量的处理直接操作的对象就是被引用对象。所以从C
的角度来说,引用本身不会为变量开辟新的存储空间,引用只是为实际对象起了一个别名。
C 程序不能在计算机上直接运行,必须经过编译器将C
程序编译生成汇编程序,从编译的角度来看,C
编译器对引用的处理与对于指针的处理是相同的,均是为变量分配一个对应的内存空间。所以,站在编译器开发者的角度来看,在编译器中要实现引用就必须要为引用变量分配一个内存空间。
所以两个视角不能混淆。

加载中…