几个问题:
1. 引用变量占有内存空间吗?
2. 引用是怎样工作的?
3. 指针是怎样工作的?
4. 引用和指针有什么区别?
1. 何为引用
《C++ Primer》里面是这样说的“引用(Reference)就是对象的另一个名字,引用只是它绑定的对象的另一个名字,作用在引用上的所有操作事实上都是作用在该引用绑定的对象上”,这句话概括得很彻底
2. 引用占有内存空间吗?
一段C++代码:
// Reference_Pointer_Local
#include <cstdio>
int main() {
int a = 100;
int& ref = a;
int* ptr = &a;
printf("%d %d %d\n", a, ref, *ptr);
return 0;
}
使用 /FAs 编译选项,其汇编代码:
PUBLIC _main
EXTRN _printf:NEAR
_DATA SEGMENT
$SG530 DB '%d %d %d', 0aH, 00H
_DATA ENDS
_TEXT SEGMENT
_a$ = -8
_ref$ = -12
_ptr$ = -4
_main PROC NEAR
; 4 : int main() {
push ebp
mov ebp, esp
sub esp, 12 ; 建立堆栈,预留12个字节
; 5 : int a = 100;
mov DWORD PTR _a$[ebp], 100 ; [ebp-8]