티스토리 뷰


구조체는 여러 데이터 타입의 멤버 변수를 추가하여 정의할 수 있기 때문에 공용체를 정의하여 추가할 수 있을 뿐만 아니라 다른 형태의 구조체를 정의하여 추가할 수 있다.

구조체 안에 다른 구조체 및 공용체를 추가하기 위해 외부에서 공용체 및 구조체를 정의하여 새로운 구조체 안에 새롭게 추가 정의할 수 있다. 내부에서 구조체 및 공용체를 정의하면서 바로 정의가능 하다. 


#include <stdio.h>


struct data {

union {

struct {

char data_a;

int data_b;

};


struct {

char a;

int b;

};

};

};


int main (void){

struct data data;


data.a = 1;

data.data_b = 2;


printf("data.data_a : %d\n", data.data_a);

printf("data.data_b : %d\n", data.data_b);


printf("data.a : %d\n", data.a);

printf("data.b : %d\n", data.b);


return 0;

}




위의 결과를 바탕으로 자세히 보면 데이터 크기를 갖는 구조체 두 개를 멤버로 갖는 공용체를 정의한 것으로 결과적으로 제일 안쪽에 

구조체의 크기로 전체 구조체 data의 크기가 된다. 따라서 구조체 data의 내부에 있는 구조체 두 개에서 각각 멤버 변수명이 서로

다르지만, 결과적으로 같은 메모리 공간을 공유하기 때문에 서로 다른 변수 이름으로 같은 값을 갖게 되는 것이다. 

'Programming > C/C++' 카테고리의 다른 글

int main (int argc, char *argv[]) 에 대해서  (0) 2016.04.05
기본 함수  (0) 2016.03.30
문자와 문자열  (0) 2016.03.30
나머지 값 연산자 사용 법 % 사용법  (0) 2016.03.19
C언어 변수의 크기  (0) 2016.03.18
댓글