<예제>
#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 |
댓글