배열 초기화
int numbers[5] = {}; // 기본값인 0으로 초기화
int numbers1[10] = { 1, 2, 3, 4, 5 }; // 설정한 값들을 제외한 나머지는 0으로 초기화
int numbers2[] = { 1, 2, 3, 11, 45, 32, 35 }; // 데이터 개수만큼 배열의 크기를 정해준다.
배열의 초기화 방법은 다양하다. 알아두자.
struct StatInfo
{
int hp = 0xAAAAAAAA;
int attack = 0xBBBBBBBB;
int defence = 0xDDDDDDDD;
};
const int monsterCount = 10;
StatInfo monsters[monsterCount]; // StatInfo[12byte]가 10개
VS 컴파일러를 기준으로 배열의 크기는 상수값을 가진다.
monsters의 각 인덱스당 크기는 12byte이다. 왜냐하면 하나의 monster에는 3개의 데이터가 들어가고 각 데이터는
4byte크기를 가지기 때문이다.
배열 활용
// 포인터
// StatInfo[ hp = 100, attack = 10, defence = 1 ] StatInfo[ ] ...
StatInfo* monster_0 = monsters;
monster_0->hp = 100;
monster_0->attack = 10;
monster_0->defence = 1;
// 참조형
// StatInfo[ ] monster_2[ ] StatInfo[ ] ...
StatInfo& monster_1 = *(monsters + 1);
monster_1.hp = 300;
monster_1.attack = 30;
monster_1.defence = 3;
배열의 이름은 배열의 시작 주소를 가리킨다. monster_0는 monsters 배열의 첫 번째 주소를 가리키고, 해당 영역에 있는 데이터에 값을 수정한다. monster_1은 monsters 배열의 두 번째 주소를 가리키고, 해당 영역의 데이터에 값을 수정한다.
하지만 이런 식으로 배열을 사용하면 직관적이지 않기 때문에 배열에서 유용한 index를 이용한다.
// 배열과 for문은 단짝이다.
for (int i = 0; i < monsterCount; i++)
{
monsters[i].hp = 100;
monsters[i].attack = 20;
monsters[i].defence = 1;
}
monsters[0].hp = 250;
monsters[0].attack = 12;
monsters[0].defence = 4;
이런식으로 index를 이용하면 직관적이고 편리하게 배열을 사용할 수 있다.
출처
https://www.inflearn.com/course/%EC%96%B8%EB%A6%AC%EC%96%BC-3d-mmorpg-1/dashboard
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의
시리즈를 원활하게 학습하기 위한 기초적인 C++ 문법들에 대해 학습합니다. 어셈블리 언어부터 시작해서 기본 C++ 문법, STL, C++11까지 핵심적인 내용을 압축해서 다루게 됩니다., - 강의 소개 | 인
www.inflearn.com
'프로그래머 > CPP_강의정리' 카테고리의 다른 글
cpp 다차원 배열 (0) | 2021.09.14 |
---|---|
cpp 포인터와 배열 (0) | 2021.09.14 |
cpp 값 전달 방식 (0) | 2021.09.13 |
cpp 함수 TIP과 구조체 (0) | 2021.09.09 |
cpp 호출 스택 (0) | 2021.09.09 |