2014-04-07 4 views
-4

여기에 묻는 질문에 대한 질문이 있습니다 :C에서 구조체 참조 연산자의 더 복잡한 표기법, ->?

"C 연산자 ->는 더 복잡한 표기법의 약자로, 더 복잡한 표기법이 사용되는 상황을 설명하십시오. 더 복잡한 표기법의. "

시험관이 무엇을 찾고 있는지 잘 모르겠습니다. 내 인상은 구조의 역 참조를 나타낼 수있는 유일한 방법은 ->다는 것입니다. 누구든지 도와 줄 수 있습니까?

+1

어떻게 개체를 역 참조하겠습니까? (구성원에 액세스하지 않고 역 참조)? 포인터가 아닌 객체가있는 경우 어떻게 멤버에 액세스합니까? – Cornstalks

+1

여기에 묻기 전에 조사를 해보면 참조가 쉽다는 것을 분명히 알 수 있습니다. 그러면 다른 표기법을 어떻게 알아낼 수 있을까요? [Google은 당신의 친구입니다] (https://www.google.com/search ? num = 20 & safe = off & site = & source = hp & q = c % 20dereference & = & oq = & gs_l =) – clcto

답변

0

역 참조는 -> 또는 (*).을 사용하여 수행 할 수 있습니다. 예보기

struct point { 
    int x; 
    int y; 
}; 
struct point my_point = { 3, 7 }; 
struct point *p = &my_point; /* To declare and define p as a pointer of type struct point, 
           and initialize it with the address of my_point. */ 

(*p).x = 8;     /* To access the first member of the struct */ 
p->x = 8;  

아마도 교사가 (*p).x = 8;을 요구하고 있었을 것입니다.

0

구문은 (*). 구문의 약식이므로 struct->member(*struct).member과 같습니다.

operator priority 때문에 괄호가 필요합니다. 기본적으로 여기서는 회원 액세스 (.) 연산자가 역 참조 (*) 연산자보다 우선합니다.

프로그래머는 게으르고 종종 단축키를 좋아합니다.