배열의 이름은 == 배열의 시작주소이다.
StatInfo monster[10];
이렇게 선언해주도록 하자.
struct Info
{
int hp = 10;
int attack = 20;
};
int main()
{
Info infos[10];
return 0;
}
이렇게하면
배열의 이름을 입력해서 메모리 가보면 이렇게 값들이 10개로 다 들어가있는거 확인 가능하다.
VC 컴파일 기준임.
StatInfo players[10];
StatInfo monsters[10];
players = monsters; // 이거 안된다.
왜? =>
auto WhoAmI = monsters;
// auto -> C++11 부터 등장함.
조커 카드 느낌으로 뒤에 변수에 따라 변한다.
(C#으로 치면 var과 같나?)
StatInfo의 포인터이다.
StatInfo의 2번째 인덱스에 +2 로 접근하여
2번째 인덱스의 이름을 monster_2로 가지고온다.
StatInfo& mopnster_2 = (monster + 2) // 이렇게만 해주면 안되고
// 참조를 하는 것이기 때문에
StatInfo& mopnster_2 = *(monster + 2)
// 이렇게 (monster + 2)의 원본에 접근 하라는 의미에서
// *(monster + 2)별을 붙여서 참조로 할당해준다.
완전 다른 의미이다.
StatInfo& monster_2 = *(monster + 2);
// 이거랑
StatInfo temp = *(monster + 2);
// 이거랑 완전 다른 의미이다.
밑에꺼는 값만 복사를 하는 것.
위와 아래의 차이점을 반드시 숙지를 해야한다.
이렇게하고 메모리를보면은
잘 들어감!
int num[10];
어떠한 값도 없는 의미에서 ccccc로 밀어줌.