구조체 및 공용 구조체 멤버

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

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;

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

참조

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