본문 바로가기
C/Definition&Grammar

[C] 유니온 (Union)

by 꾸압 2021. 3. 12.

<예제>

#include <stdio.h>

union ex{
	int i;
	char c;
};

int main(){
	
	union ex v;

	v.c = 'A';	
	printf("%d \n", &v.c);
	
	v.i = 10000;
	printf("%d \n", &v.i);
	
	return 0;
}

출력하면 같은 주소값이 나온다. int i 와 char c 는 할당된 메모리 공간 안에서 각기 다른 위치를 점유하고 있기에 그렇다.

ex) 할당된 메모리 = 주소값 = 집, int = 방 1, char = 방2

 

<예제.2>

#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("타입오류\n");
			break;
	}
}

int main(void)
{
	struct student s1, s2;

	s1.type = STU_NUMBER;
	s1.id.stu_number = 20211234;
	strcpy(s1.name, "JJ");

	s2.type = REG_NUMBER;
	strcpy(s2.id.reg_number, "000101-1010101");
	strcpy(s2.name, "PARTNER");

	print(s1);
	print(s2);

	return 0;		
}

 

 

<예제.3>

// 열거형
#include <stdio.h>

enum days { MON, TUE, WED, THU, FRI, SAT, SUN };

char *days_name[] = {
"monday", "tuesday", "wednesday", "thursday", "friday",
	"saturday", "sunday" };

int main(void)
{
	enum days d;

	for(d=MON; d<=SUN; d++)
	{
		printf("%d번째 요일의 이름은 %s입니다\n", d, days_name[d]);		
		
    }
}

 

 

<예제.4> 문자와 숫자를 치환한다.

#include <stdio.h>

enum tvtype { tube, lcd, plasma, projection };

int main(void)
{
	enum tvtype type;

	printf("TV 종류 코드를 입력하시오: ");
	scanf("%d", &type);

	switch(type)
	{
		case tube:
			printf("브라운관 TV를 선택하셨습니다.\n");
			break;
		case lcd:
			printf("LCD TV를 선택하셨습니다.\n");
			break;
		case plasma:
			printf("PDP TV를 선택하셨습니다.\n");
			break;
		case projection:
			printf("프로젝션 TV를 선택하셨습니다.\n");
			break;
		default:
			printf("다시 선택하여 주십시오.\n");
			break;
	}

	return 0;
}

 

 

 

'C > Definition&Grammar' 카테고리의 다른 글

[C] 버퍼(buffer)  (0) 2021.03.15
[C] getch / putch  (0) 2021.03.12
[C] 그래프 알고리즘 (Graph Algorithm)  (0) 2021.03.11
[C] 삽입 / 선택 / 버블 정렬  (0) 2021.03.10

댓글