오븐 노트

[C++] 배열 기초 본문

Develop/C++

[C++] 배열 기초

오 븐 2022. 7. 11. 22:11
#include <iostream>
using namespace std;

struct StatInfo
{
	int hp;
	int attack;
	int defence;
};

int main()
{
	// 배열의 크기는 상수여야 함 (VC 컴파일러 기준)
	const int monsterCount = 10;
	StatInfo monsters[monsterCount];

	// 배열의 이름은 곧 배열의 시작 위치를 가리키는 TYPE* 포인터
	auto WhoAmI = monsters;

	// monster_0[주소]
	StatInfo* monster_0 = monsters;
	monster_0->hp = 100;
	monster_0->attack = 10;
	monster_0->defence = 1;

	// 포인터의 덧셈 (StatInfo의 크기만큼 이동(한칸 이동))
	// monster_1[주소]
	StatInfo* monster_1 = monsters + 1;
	monster_1->hp = 200;
	monster_1->attack = 20;
	monster_1->defence = 2;

	// 포인터와 참조는 자유자재로 변환 가능
	// monster_2[주소]
	StatInfo& monster_2 = *(monsters + 2);
	monster_2.hp = 300;
	monster_2.attack = 30;
	monster_2.defence = 3;

	// 위와는 완전히 다른 의미
	// temp에 저장된 temp값만이 변경됨
	// temp[값]
	StatInfo temp = *(monsters + 2);
	temp.hp = 400;
	temp.attack = 40;
	temp.defence = 4;

	// 자동화
	for (int i = 0; i < 10; i++)
	{
		StatInfo& monster = *(monsters + i);
		monster.hp = 100 * (i + 1);
		monster.attack = 10 * (i + 1);
		monster.defence = 1 * (i + 1);
	}

	// *(monsters + i) 라는 표현이 불편, 가독성이 떨어짐
	// 개선 방식이 index
	// *(monsters + i) === monsters[i]
	monsters[0].hp = 100;
	monsters[0].attack = 10;
	monsters[0].defence = 1;

	for (int i = 0; i < 10; i++)
	{
		monsters[i].hp = 100 * (i + 1);
		monsters[i].attack = 10 * (i + 1);
		monsters[i].defence = 1 * (i + 1);
	}

	// 배열 초기화 문법
	int numbers[5] = {}; // 0으로 밀어버림
	int numvers1[10] = { 1, 2, 3, 4, 5 }; // 설정한 값 까지는 저장되지만 설정하지 않은 값은 0으로 초기화
	int numvers2[] = { 1, 2, 3, 4, 5, 3, 4, 5, 3, 4, 5, 3, 4, 5 }; // 데이터 개수만큼의 크기에 해당하는 배열로 생성
	char helloStr[] = { 'H', 'e', 'l', 'l', 'o', '\0' };

	return 0;
}

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의
 
C++ 카테고리의 글은 인프런 Rookiss님의 강의를 공부하며 정리하는 내용입니다.
이미 알고 있는 내용도 다시 정리 되어있을 수 있습니다.

 

모든 글은 제가 공부하기 위해 작성합니다.

'Develop > C++' 카테고리의 다른 글

[C++] 로또 번호 생성기  (0) 2022.07.13
[C++] 포인터 vs 배열  (0) 2022.07.11
[C++] 포인터 vs 참조  (0) 2022.07.10
[C++] 참조 기초  (0) 2022.07.10
[C++] 포인터 실습  (0) 2022.07.05