Pointer and reference maybe same at assembly level.
Try an experiment :
compile it to assembly with Microsoft c++ like this :
or with gcc like
Open the asm file like c:\ notepad filename.asm
Now you can the code of i, pointer, and reference;
you see the code for pointer is exactly same as reference .
Try an experiment :
Code: C
# include<stdio.h>
int main()
{
int i =90;
int *pointer;
int &reference = i; // Line 6
pointer = &i;
return 0; // Line 8
}
Code:
c:\ cl /Fa filename.cpp
Code:
c:\ gcc -S -masm=intel filename.cpp
Now you can the code of i, pointer, and reference;
Code:
Line 6 mov DWORD PTR _i$[ebp], 90 ; int i = 90; ; Line 8 lea eax, DWORD PTR _i$[ebp] ; int &reference = i; mov DWORD PTR _reference$[ebp], eax ; Line 9 lea ecx, DWORD PTR _i$[ebp] ; int *pointer mov DWORD PTR _pointer$[ebp], ecx ; pointer = &i;


