int hp = 100;
int* ptr = &hp;
int** ptrr = &ptr;
cout << *ptr; << *ptrr << **ptrr;
*ptr == 1004번지(hp)가 갖고 있는 값 (100)
*ptrr == 1003번지(ptr)이 갖고 있는 값 (hp의 주소 즉 1004)
**ptrr -> ptrr은 ptr을 가리키고 있고 ptr은 hp를 가리키고 있으므로
1004(번지)hp가 갖고 있는 값(100)
&:해당 변수의 주소값
+-: ex) 1000번지의 주소값을 갖고있는 포인터 변수 int* ptr이 있다 했을때 ptr + 1연산을 하면 ptr의 기준으로 다음번지의 주소에 접근하게됨
(주의:ptr의 여전히 1000번지 주소를 가리키고 있는 상태)
*, -> 연산은 아래 예시 참고(간접 연산자, 간접 멤버 연산자)
struct StatInfo
{
int hp;
int attack;
int defence;
};
int main()
{
StatInfo monster;
monster.hp = 100;
monster.attack = 20;
monster.defence = 5;
StatInfo* ptr = &monster;
(*ptr).attack = 50;
ptr->hp = 150;
cout << monster.attack << endl;
cout << monster.hp << endl;
}