*참조(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 |