[C언어]11.공용체(union), 열거형(enum)

공용체 (union)

구조체 struct와는 오직 한가지가 다르다.
모든 구조체 변수가 하나의 메모리 공간을 공유한다. (컴퓨터의 그 메모리)


모든 멤버 변수가 같은 메모리를 공유하기 때문에, 공용체는 한 번에 하나의 멤버 변수밖에 사용할 수 없다.

(위 그림을 참고하면 이해하기 쉬울 것 이다.)

 

예제(16진수 출력)

리틀엔디안에 의해 다음과 같은 결과가 발생한다.

#include <stdio.h>
union A{
int a;
short b;
char c;
};
int main(){
union A z;
z.a=0x12345678;

printf("%x",z.a); //결과: 12345678
printf("%x",z.b); //결과: 5678
printf("%x",z.c); //결과: 78
}

//z.c를 16진수로 출력했을 때, 0x12의 12가 아닌 0x78이 출력되는 것은 리틀엔디안 방식을 사용하고 있기 때문이다.


열거형 (enum)

 

열거 :  [명사] 여러 가지 예나 사실을 낱낱이  늘어놓음.

 

 

1) 0, 1, 2, 3처럼 수를 변수에 대응시켜 사용하기 위한 자료형

2) 기본 값은 0으로 시작된다

3) b1, b3 변수처럼 넣어주면 지정한 수를 시작점으로 다시 나열하기 시작한다.

 

#include <stdio.h>
enum {a1, a2, a3, a4};
enum {b1 = 3, b2, b3 = 1, b4};
int main()
{
printf("%d %d %d %d", a1, a2, a3, a4); //실행결과: 0, 1, 2, 3
printf("%d %d %d %d", b1, b2, b3, b4); //실행결과: 3, 4, 1, 2
}
반응형

'프로그래밍 언어 > C' 카테고리의 다른 글

[C언어]10. 구조체  (0) 2023.12.14
[C언어]9. 포인터  (0) 2023.12.13
[C언어]8. 함수  (0) 2023.12.12
3.16 스터디 내용  (0) 2023.03.18
3.9 C스터디 과제  (0) 2023.03.15