기존 배열을 Pointer를 통해 이용하는 법을 학습하였다.
#include <iostream>
#include <deque>
#include <string>
#include <sstream>
#include <vector>
#include <string>
#include <queue>
struct Statinfo {
int hp = 4;
int attack = 8;
int defence = 12;
};
int main(void) {
//TYPE 이름[개수]
const int monsterCount = 10;
Statinfo monsters[monsterCount]; //배열에 사용할려면 "상수"이여야 한다.
Statinfo players[10];
//문법적 오류다.
//players = monsters;
// 타입을 추론해서 맞는 타입을 지정해주는것.
//배열 = 시작위치를 가르키는 포인터
auto WhoAmi = monsters;
//Statinfo [100,10,1] Statinfo [] Statinfo [] Statinfo [] Statinfo [] Statinfo [] ...
Statinfo* monster_0 = monsters;
//monsters의 첫번째 배열 값 건들인다.
monster_0->hp = 100;
monster_0->attack = 10;
monster_0->defence = 1;
//포인터의 덧셈은 진짜 1을 더하라는 것이 아니라 statinfo 타입 바구니 한개씩 이동하라는 의미이다.
monsters + 1;
//Statinfo [100,10,1] Statinfo [200,20,2] Statinfo [] Statinfo [] Statinfo [] Statinfo [] ...
Statinfo* monster_1 = monsters + 1;
//monsters의 첫번째 주소 + 1 값 건들인다.
monster_1->hp = 200;
monster_1->attack = 20;
monster_1->defence = 2;
//reference이기때문에 . 사용해야한다.
Statinfo& monster_2 = *(monsters + 2);
monster_2.hp = 300;
monster_2.attack = 30;
monster_2.defence = 3;
//위 아래는 다른 의미
Statinfo temp = *(monsters + 2);
//주소 값을 temp에 복사해서 하는 것이기때문에 monsters 의 주소 체계에는 상관이 없다.
temp.hp = 300;
temp.attack = 30;
temp.defence = 3;
//이를 자동화 한다.
for (int i = 0; i < 10; i++) {
Statinfo& monster = *(monsters + i);
monster.hp = 100 * (i + 1);
monster.attack = 10 * (i + 1);
monster.defence = (i + 1);
}
//*(monsters+i) = monsters[i] 같은 의미
//위 방식은 포인터를 이용하는 거고 실제로 사용할때는 그냥 인덱스를 사용하면된다.
return 0;
}