← All Posts

[TIL] 260925 공부기록

이중포인터 공부

TIL#

오늘은 모닝 코딩을 했다.

아마 외출 때문에 하루 종일 개발을 못할 것 같아서 틈나는 대로 공부하는 중!

오늘은 포인터 문제를 계속 풀었는데 아직도 이중 포인터가 너무 어렵다.. 특히 포인터가 복사되고 각각 어떤 방향을 가리키는지 추적하는 부분에서 많이 헷갈리는 것 같다.

그래서 내일은 이중 포인터를 위주로 조금 더 심도 있게 공부해봐야 될 것 같다.

배운점#

오늘은 연결 리스트에서 자주 봤던 ListNode **ptrHead와 비슷한 형태의 문제를 풀어봤다.

changeHead(&head)를 호출하면 함수의 ptrHead가 main에 있는 head를 가리키게 되고,

(*ptrHead)->next는 결국 head가 가리키고 있는 노드의 다음 노드를 의미한다.

그래서

*ptrHead = (*ptrHead)->next;

를 따라가 보면 결국 main의 head가 다음 노드를 가리키도록 바뀌는 구조였다.

이번 문제에서는

head -> a(10) -> b(20)

에서 changeHead(&head)를 실행한 뒤

head -> b(20)

이 되는 과정을 직접 따라가 봤다.

특히 *ptrHead가 단순히 새로운 포인터를 만드는 게 아니라 main의 head 자체를 가리키고 있어서 함수 안에서 값을 변경하면 main의 head도 바뀐다는 부분을 다시 확인했다.

느낀점#

아직 포인터가 복사되는 개념이나 포인터가 어느 방향을 가리키는지 추적하는 부분이 많이 헷갈린다.

특히 12번 문제부터 확실히 어려워하는 것 같기도 하다..

그래도 이런 문제를 직접 하나씩 따라가다 보니까 예전보다 head, *ptrHead, (*ptrHead)->next가 각각 뭘 의미하는지는 조금씩 보이는 것 같다.

결국 많이 풀어보면서 직접 추적해보는 게 답인 것 같다.

내일은 이중 포인터를 조금 더 집중해서 공부해봐야겠다.