구조체 및 공용 구조체 멤버

"멤버 선택 식"은 구조체와 공용 구조체의 멤버를 참조합니다. 이러한 식은 선택한 멤버의 값과 형식을 갖게 됩니다.


postfix-expression  
.  
identifier  
postfix-expression  
->  
identifier  

다음 목록에서는 멤버 선택 식의 두 가지 형태에 대해 설명합니다.

  1. 첫 번째 형태에서 postfix-expressionstruct 또는 union 형식의 값을 나타내며, identifier는 지정된 구조체 또는 공용 구조체의 멤버 이름을 지정합니다. 연산값은 identifier의 값이며 postfix-expression이 l-value인 경우 l-value입니다. 자세한 내용은 L-Value 및 R-Value 식을 참조하세요.

  2. 두 번째 형태에서 postfix-expression은 구조체 또는 공용 구조체에 대한 포인터를 나타내며, identifier는 지정된 구조체 또는 공용 구조체의 멤버 이름을 지정합니다. 값은 identifier의 값이며 l-value입니다.

    두 가지 형태의 멤버 선택 식은 비슷한 효과가 있습니다.

    마침표(.) 앞의 식이 포인터 값에 적용된 간접 참조 연산자(\)로 구성된 경우 멤버 선택 연산자(->*)를 포함하는 식은 마침표를 사용하는 식의 약식 버전입니다. 따라서


expression  
->  
identifier  

위의 식은 아래의 식과 동일합니다.


(*  
expression  
) .  
identifier  

여기서 expression은 포인터 값입니다.

예제

다음 예제에서는 이 구조체 선언을 참조합니다. 이러한 예제에서 사용하는 간접 참조 연산자(\*)에 대한 자세한 내용은 간접 참조 및 주소 연산자를 참조하세요.

struct pair   
{  
    int a;  
    int b;  
    struct pair *sp;  
} item, list[10];  

item 구조체에 대한 멤버 선택 식은 다음과 같습니다.

item.sp = &item;  

위의 예제에서 item 구조체의 주소는 구조체의 sp 멤버에 할당됩니다. 이는 item이 자신에 대한 포인터를 포함하고 있음을 의미합니다.

(item.sp)->a = 24;  

이 예제에서는 포인터 식 item.sp를 멤버 선택 연산자(->)와 함께 사용하여 a 멤버에 값을 할당합니다.

list[8].b = 12;  

이 문은 구조체 배열에서 개별 구조체 멤버를 선택하는 방법을 보여 줍니다.

참고 항목

멤버 액세스 연산자: . 및 ->