C를 공부하다 보면 한 번쯤 마주하게 되는 표현이 있다:
&a->b
나는 처음에 당연히 (&a)->b일 거라고 생각했다.
그래서 코드가 해석이 되지 않았다.
💡 알고 보니, ->의 연산자 우선순위는 &보다 높다!
완전히 다르다!
(&a)->b
이건 a의 주소를 구해서, 그 주소를 통해 구조체 멤버 b에 접근하겠다는 의미다.
→ 즉, a는 구조체여야 하고, &a는 그 구조체의 포인터여야 한다.
따라서 a가 구조체 포인터인 경우엔 (&a)->b는 컴파일 에러가 뜰 것이다.
&a->b = &(a->b)
헷갈리니까 괄호로 감싸서 명확하게 표현하자.
(감사합니다)