공용체는 union 키워드로 정의하며 멤버 중에서 가장 큰 자료형의 공간을 공유
공용체와 구조체 함께 사용
공부 : c언어 코딩도장
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
|
// 공용체 정의하기
union 공용체이름 {
자료형 멤버이름;
};
// 공용체 변수 선언하기
union 공용체이름 변수이름;
// 공용체를 정의하는 동시에 변수 선언하기
union 공용체이름 {
자료형 멤버이름;
} 변수;
// 공용체를 정의하면서 공용체 별칭 정의하기
typedef union 공용체이름 {
자료형 멤버이름;
} 공용체별칭;
// 익명 공용체 정의하기
typedef union {
자료형 멤버이름;
} 공용체별칭;
// 공용체 별칭으로 변수 선언하기
공용체별칭 변수이름;
| cs |
1
2
3
4
5
6
7
8
9
10
|
// 공용체 포인터에 동적 메모리 할당
struct 공용체이름 *포인터이름 = malloc(sizeof(union 공용체이름));
// 공용체 별칭으로 포인터를 선언하고 동적 메모리 할당
공용체별칭 *포인터이름 = malloc(sizeof(공용체별칭));
포인터->멤버; // 공용체 포인터 멤버의 값을 가져옴
포인터->멤버 = 값; // 공용체 포인터 멤버에 값을 저장
free(포인터); // 공용체 메모리 해제
| cs |
공용체와 구조체 함께 사용
1
2
3
4
5
6
7
8
9
10
11
12
13
|
struct 구조체A {
자료형 멤버이름;
};
struct 구조체B {
자료형 멤버이름
struct 구조체A 멤버이름; // 구조체A를 멤버로 가짐
};
struct 구조체B 변수이름;
변수.멤버.멤버 // 구조체 안의 구조체 멤버 값을 가져옴
변수.멤버.멤버 = 값; // 구조체 안의 구조체 멤버에 값을 저장
| cs |
익명 구조체와 익명 공용체를 함께 사용하면 같은 값이지만 이름과 형태를 달리하여 접근할 수 있음.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
struct 구조체이름 {
union { // 익명 공용체
struct { // 익명 구조체
자료형 멤버이름A; // 변수로 접근할 때 사용
자료형 멤버이름B;
자료형 멤버이름C;
};
자료형 배열이름[3]; // 배열로 접근할 때 사용
};
};
struct 구조체이름 변수이름;
변수.멤버A; // 같은 값을 변수로 접근
변수.배열[0]; // 같은 값을 배열의 인덱스로 접근
| cs |
공부 : c언어 코딩도장
댓글
댓글 쓰기