Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- test bench
- ATMEGA128A
- Edge Detector
- verilog
- java
- soc 설계
- hc-sr04
- structural modeling
- pwm
- vivado
- FND
- half adder
- uart 통신
- Linked List
- prescaling
- i2c 통신
- gpio
- behavioral modeling
- ring counter
- dataflow modeling
- KEYPAD
- Recursion
- Pspice
- D Flip Flop
- stop watch
- atmega 128a
- BASYS3
- Algorithm
- LED
- DHT11
Archives
- Today
- Total
거북이처럼 천천히
공용체 본문
1. 공용체는 무엇인가?
- 공용체의 선언 방식은 구조체와 동일하나, 구조체는 메모리상에 모든 맴버들을 저장하기 위한 공간을 마련하지만, 공용체인 경우에는 모든 맴버들이 하나의 저장 공간을 공유하며, 사용한다.
- 공용체의 기본 형태는 다음과 같다.
// 공용체 선언
union student {
int stduent_id;
double grade;
};
2. 모든 맴버들이 하나의 저장 공간을 공유한다면, 동시에 여러 맴버들을 저장할 수 있는가?
- 공용체에서는 맴버들이 하나의 저장 공간을 공유하면 저장하기 때문에 동시에 여러 맴버들의 데이터들을 저장할 수 없다.
- 따라서 하나의 맴버 값이 저장 공간에 저장되어 있는 상태에서 다른 맴버값이 저장된다면 기존의 맴버 데이터 값에다가 덮어씌우기 형태로 저장된다.
- 따라서 모든 맴버들이 하나의 저장 공간을 공유한다는 점에서 메모리가 절약되지만, 동시에 여러 맴버들의 값을 저장할 수 없다는 단점을 갖는다.
3. 공용체의 규칙
3.1) 공용체의 변수 크기는 맴버들 가운데에서 가장 크기가 큰 맴버가 기준이 된다.
union MyUnion {
float a,
double b,
int c,
char d[5] };
- 위와 같이 서로 다른 자료형을 갖는 맴버들이 존재한다면, double 형이 8byte로 가장 크기 때문에 공용체의 크기는 8byte를 갖는다.
3.2) 공용체 변수의 초기화는 중괄호를 사용해 첫 번째 맴버만 초기화한다.
- 공용체는 동시에 여러 맴버들의 값을 저장할 수 없기 때문에 공용체의 초기화는 첫 번재 맴버만 초기화하거나 맴버 접근 연산자를 통해 직접 지정해야 한다.
'C' 카테고리의 다른 글
C언어 잡다한 정보 정리 (1) (0) | 2024.07.04 |
---|---|
구조체의 메모리 공간 크기 (0) | 2024.06.20 |
함수 포인터 (0) | 2024.06.19 |
배열 포인터 (1) | 2024.06.19 |
이중 포인터 (1) | 2024.06.19 |