programing

"&(s->var)" vs "&s->var"에서처럼 구조체 포인터에서 구조체 멤버의 주소를 가져오려면 괄호가 필요합니까?

lastmoon 2023. 8. 15. 11:26
반응형

"&(s->var)" vs "&s->var"에서처럼 구조체 포인터에서 구조체 멤버의 주소를 가져오려면 괄호가 필요합니까?

나는 있습니다struct str *s;

허락하다var변수가 되다s아이즈&s->var와 동등한.&(s->var)?

예, 예, 구성원 액세스 연산자가 연산자의 주소보다 우선 순위가 높기 때문에 동일합니다.

가독성 측면에서, 두 번째 것.&(s->var)보다 훨씬 가독성이 높습니다.&s->var그리고 첫 번째 형태보다 선호되어야 합니다.두 번째 양식을 사용하면,&(s->var)괄호 안의 표현식이 항상 먼저 평가된다는 것을 알기 때문에 실제로 무엇을 하고 있는지 다시 계산할 필요가 없습니다.의심스러운 경우 괄호를 사용합니다.

네.

(->)가 &보다 우선 순위가 높습니다.http://cppreference.com/wiki/language/operator_precedence) 을 참조하십시오.

예, 포인터 참조 해제 연산자 때문에->주소 연산자보다 우선 순위가 높습니다.&.

언급URL : https://stackoverflow.com/questions/5767973/are-parenthesis-needed-to-get-the-address-of-a-struct-member-from-a-pointer-to-t

반응형