코딩 이야기

[C언어] UNION을 이용한 메모리 공유

고주망고 2021. 8. 28. 18:03

목표: UNION 을 이용하여 학번/주민등록번호를 이용하여 사람을 조회해보자

->struct와 유사한 구조를 가진 union을 이용하면 같은 메모리를 이용하기때문에 메모리 관리에 더 안정적이고 속도를 높일수있습니다

실행예시


#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

#define STU_NUMBER 1
#define REG_NUMBER 2

struct student {
int type; //공용체가 현재 어떤 변수를 사용하는지를 저장한다
union {
int stu_number;//학번이나
char reg_number[15] ;//주민등록번호를 알면 학생을 구별할수있다
}id;
char name[20];
};

void print(struct student s) {
switch (s.type) {
case STU_NUMBER:
printf("학번:%d\n", s.id.stu_number);
printf("이름:%s\n", s.name);
break;
case REG_NUMBER:
printf("학번:%s\n", s.id.reg_number);
printf("이름:%s\n", s.name);
break;
default:
printf("오류발생");
break;
}


void main() {
struct student s1, s2;

s1.type = STU_NUMBER;
s1.id.stu_number = 20190001;
strcpy(s1.name, "홍길동");


s2.type = REG_NUMBER;
strcpy(s2.id.reg_number,"000210");
strcpy(s2.name, "김백골");

print(s1);
print(s2);
}