포인터 기초

정채운·2023년 10월 7일
0
post-thumbnail
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;
} 

0개의 댓글