2017-11-06 1 views
-4

->는보다 더 높은 우선 순위를 가지고 있습니다,(구조체 이름 *) b-> c 무엇을 의미합니까?

typedef struct { 
    char *a; 
    char *val; 
} kvp; 

하고 연산자 우선 순위에 대해 묻는 경우가 kvp *p = (kvp *)n->val;

+0

@IharobAlAsimi는 왜 엄격한 앨리어싱을 위반? 'val'은'void *'입니다. –

+0

정의되지 않은 동작을 유발할 수도있는 캐스트입니다. _ 정확히 당신이 달성하고자하는 것은 무엇입니까? –

+0

'void * val'의 타입이'kvp *'이고,'n'이 유효한 경우에만 유효합니다. – Stargateur

답변

0

로 선언 때 p 무엇

typedef struct node { 
    void *val; 
    node *next; 
} node; 

node *n; 
kvp *p = (kvp *)n->val; 

을 다음과 같은 구조를 감안할 때 캐스트.

// This expression 
(kvp *)n->val 
// is evaluated as this: 
(kvp *)(n->val) 
// NOT this: 
((kvp *)n)->val 

Source (구글 "C의 연산자 우선 순위")는

관련 문제