프로그래머/CPP_강의정리

cpp 배열

미역국마싯 2021. 9. 14. 14:53

배열 초기화

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