728x90
ㅇ구조체와 공용체의 차이
- 구조체는 각 변수가 각자의 메모리를 차지,
- 공용체는 메모리를 공유
ㅇ 따라서, 공용체는 어느 한 변수에 값이 저장되면, 나머지 변수의 값은 사용할 수 없다.
ㅇ공용체 정의와 선언
union 공용체이름 { // 공용체 정의
자료형 멤버이름;
};
union 공용체이름 변수이름; // 공용체 선언
ㅇExample
#define _CRT_SECURE_NO_WARNINGS // strcpy 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>
#include <string.h> // strcpy 함수가 선언된 헤더 파일
union Box { // 공용체 정의
short candy; // 2바이트
float snack; // 4바이트
char doll[8]; // 8바이트
};
int main()
{
union Box b1; // 공용체 변수 선언
printf("%d\n", sizeof(b1)); // 8: 공용체의 전체 크기는 가장 큰 자료형의 크기
strcpy(b1.doll, "bear"); // doll에 문자열 bear 복사
printf("%d\n", b1.candy); // 25954
printf("%f\n", b1.snack); // 4464428256607938511036928229376.000000
printf("%s\n", b1.doll); // bear
return 0;
}
ㅇ결과
8
25954
4464428256607938511036928229376.000000
bear
ㅇ공용체와 앤디안!
참고 : https://dojang.io/mod/page/view.php?id=455
C 언어 코딩 도장: 54.2 공용체와 엔디언
공용체 멤버에 값을 저장하고 가져오는 방법을 좀 더 자세히 알아보겠습니다. 다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요. union_endian.c #include union Data { // 공용체 정의 char c1; short n
dojang.io
728x90
'고흐의 연구실 > C언어와 C++' 카테고리의 다른 글
[C언어] 구조체 비트 필드 (0) | 2020.08.13 |
---|---|
[C언어] 구조체 응용 (0) | 2020.08.10 |
[C언어] size_t 자료형이란? (0) | 2020.08.10 |
[C언어] 구조체 메모리 사용 함수 memset(), memcpy() (1) | 2020.08.10 |
[C언어] 구조체 정렬 크기 조절, #pragma 란?? (0) | 2020.08.09 |