티스토리 뷰
구조체는 여러 데이터 타입의 멤버 변수를 추가하여 정의할 수 있기 때문에 공용체를 정의하여 추가할 수 있을 뿐만 아니라 다른 형태의 구조체를 정의하여 추가할 수 있다.
구조체 안에 다른 구조체 및 공용체를 추가하기 위해 외부에서 공용체 및 구조체를 정의하여 새로운 구조체 안에 새롭게 추가 정의할 수 있다. 내부에서 구조체 및 공용체를 정의하면서 바로 정의가능 하다.
#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 |
- Total
- Today
- Yesterday
- 오일러 프로젝트 12번
- 비손실 압축
- Tips
- 패킷
- 실행 압축
- 오일러 프로젝트 11번
- MFC
- 화투이미지맞추기
- 서버
- Omok
- 오일러 프로젝트 14번
- 허프만 알고리즘
- 이미지게임
- 약수 500개
- TIPS강좌
- CBrush
- 팁스강좌
- tipssoft
- 헤더
- 오일러 프로젝트 16번
- 오일러
- 와이어샤크
- 오일러 프로젝트 10본
- 오일러 프로젝트 8번
- 키보드 메시지 이벤트
- 2의 1000승
- arp
- 오일러 프로젝트 13
- tipsoft
- tipsr강좌
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |