구조체란?
데이터를 체계적으로 활용하기 위한 예약어이다.
변수들로 데이터를 다룰 수는 있지만 구조체를 이용하면 좀더 편하고 간단하게 만들수 있다.
#include <stdio.h>
#define INFO_SIZE 5
#define NAME_SIZE 10
struct user
{
char name[NAME_SIZE];
int age;
};
int main()
{
struct user info[INFO_SIZE];
int i;
for (i = 0; i < INFO_SIZE; i++)
{
printf("user[%d].name = ", i);
scanf("%s", info[i].name);
printf("user[%d].age = ", i);
scanf("%d", &info[i].age);
}
for (i = 0; i < INFO_SIZE; i++)
printf("user[%d].name = %s\t\tuser[%d].age = %d\n\n", i, info[i].name, i, info[i].age);
return 0;
}
공용체란?
구조체의 선언이나 사용방법이 같으나 저장방식이 다르다.
구조체는 각각의 변수에 값을 저장하지만 공용체는 공용체 하나에만 값을 부여하여 같은 변수들로 선언하더라도
공용체의 모든 변수는 같은 값만을 표시한다.(공유한다.)
#include <stdio.h>
#define NAME_SIZE 4
struct user
{
char name[NAME_SIZE];
int age;
};
union user2
{
char name[NAME_SIZE];
int age;
};
int main()
{
struct user info1;
union user2 info2;
int i;
info1.age = info2.age = 0x44434241;
for (i = 0; i < NAME_SIZE; i++)
printf("info1.name[%d] = %c\t\tinfo2.name[%d] = %c\n", i, info1.name[i], i, info2.name[i]);
printf("info1.age = %d\t\tinfo1.age = %d\n", info1.age, info2.age);
return 0;
}
열거형이란?
열거형은 상수에 이름표를 붙여 코드를 더 보기 편하게 해준다.
열거형 변수 선언할때 상수를 대입하면 다음 변수부터 차례대로 1을 더하여 대입된다.
#include <stdio.h>
enum WEEK {SUNDAY=10, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY};
int main()
{
int today = WEDNESDAY;
printf("today is %d and ", today);
switch (today)
{
case SUNDAY:
printf("SUNDAY\n");
break;
case MONDAY:
printf("MONDAY\n");
break;
case TUESDAY:
printf("TUESDAY\n");
break;
case WEDNESDAY:
printf("WEDNESDAY\n");
break;
case THURSDAY:
printf("THURSDAY\n");
break;
case FRIDAY:
printf("FRIDAY\n");
break;
case SATURDAY:
printf("SATURDAY\n");
break;
}
return 0;
}