Notice
Recent Posts
Recent Comments
Link
오븐 노트
[C++] 참조 기초 본문
#include <iostream>
using namespace std;
struct StatInfo
{
int hp;
int attack;
int defence;
};
void CreateMonster(StatInfo* info)
{
info->hp = 100;
info->attack = 8;
info->defence = 5;
}
// 1) 값 전달 방식
// [매개변수][RET][지역변수(info)][매개변수(info)][RET][지역변수]
void PrintInfoByCopy(StatInfo info)
{
cout << "---------------------" << endl;
cout << "HP: " << info.hp << endl;
cout << "ATT: " << info.attack << endl;
cout << "DEF: " << info.defence << endl;
cout << "---------------------" << endl;
}
// 2) 주소 전달 방식
// [매개변수][RET][지역변수(info)][매개변수(&info)][RET][지역변수]
void PrintInfoByPtr(StatInfo* info)
{
cout << "---------------------" << endl;
cout << "HP: " << info->hp << endl;
cout << "ATT: " << info->attack << endl;
cout << "DEF: " << info->defence << endl;
cout << "---------------------" << endl;
}
// 3) 참조 전달 방식
// 값 전달처럼 편리하게 사용하고, 주소 전달처럼 주소값을 이용하여 원본을 수정하는 방식
// 형태는 일반 값 전달 방식, 동작은 포인터와 같은 방식
void PrintInfoByRef(StatInfo& info)
{
cout << "---------------------" << endl;
cout << "HP: " << info.hp << endl;
cout << "ATT: " << info.attack << endl;
cout << "DEF: " << info.defence << endl;
cout << "---------------------" << endl;
}
int main()
{
int number = 1;
int* pointer = &number;
*pointer = 2;
// 참조
// 어셈블리 관점에서 실제 작동 방식은 포인터와 같다
// C++ 관점에서는 number라는 변수에 또 다른 이름을 부여한 것
// 따라서 해당 변수명을 조작 시 number가 조작됨
// 실행 로그를 보면 포인터와 완벽히 같다
int& reference = number;
reference = 3;
StatInfo info;
CreateMonster(&info);
PrintInfoByCopy(info);
PrintInfoByPtr(&info);
PrintInfoByRef(info);
return 0;
}
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의
C++ 카테고리의 글은 인프런 Rookiss님의 강의를 공부하며 정리하는 내용입니다.
이미 알고 있는 내용도 다시 정리 되어있을 수 있습니다.
모든 글은 제가 공부하기 위해 작성합니다.
'Develop > C++' 카테고리의 다른 글
[C++] 배열 기초 (0) | 2022.07.11 |
---|---|
[C++] 포인터 vs 참조 (0) | 2022.07.10 |
[C++] 포인터 실습 (0) | 2022.07.05 |
[C++] 포인터 연산 (0) | 2022.07.01 |
[C++] 포인터 기초 #2 (0) | 2022.07.01 |