참조 기초

namu·2022년 7월 6일

PrintInfoByCopy(info);
PrintInfoByPtr(&info);

StatInfo 구조체가 1000바이트짜리 대형 구조체라면?

  • (값 전달) StatInfo로 넘기면 1000바이트가 복사되는
  • (주소 전달) StatInfo*는 4 or 8바이트
  • (참조 전달) StatInfo&는 4 or 8바이트

int& reference = number;
C++ 관점에서는 number라는 바구니에 또 다른 이름을 부여한 것.
로우레벨(어셈블리) 관점에서 실제 작동 방식은 int*와 같음.

	int number = 1;
mov dword ptr [number],1
	int* pointer = &number;
lea eax,[number]
mov dword ptr [pointer],eax
	*pointer = 2;
mov eax,dword ptr [pointer]
mov dword ptr [eax],2
	int& reference = number;
lea eax,[number]
mov dword ptr [reference],eax
	reference = 3;
mov eax,dword ptr [reference]
mov dword ptr [eax],3

참고) dword ptr 이란 size directives로써 크기를 알려주는 것이다.

profile
안녕하세요

0개의 댓글