18. 구조체, 공용체, 열거형

2014. 4. 28. 17:50 - 루하스

구조체란?

데이터를 체계적으로 활용하기 위한 예약어이다.

변수들로 데이터를 다룰 수는 있지만 구조체를 이용하면 좀더 편하고 간단하게 만들수 있다.

#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;

}



'프로그래밍 > C언어' 카테고리의 다른 글

C언어의 기본 구조  (0) 2015.01.17
C언어의 역사  (0) 2015.01.17
17. 포인터  (0) 2014.04.26
16. 배열  (0) 2014.04.21
15. 반복문 break, continue  (0) 2014.03.30

다른 카테고리의 글 목록

프로그래밍/C언어 카테고리의 포스트를 톺아봅니다