프로그래밍/C++

#30. 참조 기초

코딩하는상후니 2022. 7. 19. 22:02
 

 

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

 

 

=> 실제 어셈블리에서는 똑같이 동작함
=> 주소마저도 똑같음.
 
 

 

*그렇다면 참조는 왜 쓰는걸까 ??
1. 포인터의 -> 불편하다.
2. 참조는 무조건 초기화 해주어야 함.
3. 주소를 마음대로 바꿀 수 없다.
 
 

 

 

*매개변수 * 와 값 복사 방식
 
void CreateMonster(StatInfo* info) 
{ 
	info->hp = 100; 
	info->attack = 8; 
	info->defence = 5; 
} 
void CreateMonster(StatInfo info) 
{ 
	info.hp = 100; 
	info.attack = 8; 
	info.defence = 5; 
}

 

//1. 값 전달 방식 
void PrintInfoByCopy(StatInfo info) 
{ 
	cout << "----------------" << endl; 
	cout << info.hp << endl; 
	cout << info.attack << endl; 
	cout << info.defence << endl; 
	cout << "----------------" << endl; 
} 
//2. 주소 전달 방식 
void PrintInfoByPtr(StatInfo* info) 
{ 
	cout << "----------------" << endl; 
	cout << info->hp << endl; 
	cout << info->attack << endl; 
	cout << info->defence << endl; 
	cout << "----------------" << endl; 
}
=> 만약 StatInfo 구조체가 1000바이트짜리 대형 구조체라면???
- (값 전달) 1000바이트 복사!!?!?
- (주소 전달) , (참조 전달) StatInfo* 8바이트
 
 
 

 

본 내용은 인프런의 루키스님 강의를 듣고 정리한 내용입니다.

 

'프로그래밍 > C++' 카테고리의 다른 글

#32. 배열기초  (0) 2022.07.19
#31. 참조 & 포인터  (0) 2022.07.19
#29. 포인터 연산  (0) 2022.07.19
#28. 포인터 기초  (0) 2022.07.19
#27. 함수 기타 내용  (0) 2022.07.18