&a->b는 &(a->b)일까? (&a)->b일까?

맹쥐·2025년 5월 12일
7
post-thumbnail

C를 공부하다 보면 한 번쯤 마주하게 되는 표현이 있다:

&a->b

🤯 (&a)->b일까? 아니면 &(a->b)일까?

나는 처음에 당연히 (&a)->b일 거라고 생각했다.
그래서 코드가 해석이 되지 않았다.

💡 알고 보니, ->의 연산자 우선순위는 &보다 높다!

❌ 그렇다면 (&a)->b는?

완전히 다르다!

(&a)->b

이건 a의 주소를 구해서, 그 주소를 통해 구조체 멤버 b에 접근하겠다는 의미다.
→ 즉, a는 구조체여야 하고, &a는 그 구조체의 포인터여야 한다.

따라서 a가 구조체 포인터인 경우엔 (&a)->b는 컴파일 에러가 뜰 것이다.


결론

&a->b = &(a->b)

헷갈리니까 괄호로 감싸서 명확하게 표현하자.

profile
이유민

1개의 댓글

comment-user-thumbnail
2025년 5월 12일

(감사합니다)

답글 달기