Notice
Recent Posts
Recent Comments
Link
오븐 노트
[C++] 배열 기초 본문
#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 |