구조체 정의
struct point
{
int x;
int y;
};
구조체
를 '사용자 정의 자료형'이라 하고
구조체를 이루는 변수를 '구조체 멤버'라고 한다.
struct point
{
int x;
int y;
} p1, p2, p3;
구
조체 정의와 변수 선언을 동시에 할 수 있음
struct point
{
int x;
int y;
};
int
main(void)
{
struct point p1,
p2, p3;
return 0;
}
메인함수에서 구조체 변수 선언을 할 수도 있다.
-------------
구조체 초기화 방법들..--------
struct person
{
char name[20];
char
phone[20];
int age;
};
int main(void)
{
struct person p1={"Free Lec",
"02-3142-6702", 20}; //배열 초기화 문법을 구조체에 적용
struct person p2={.age=20, .name="Free Lec",
.phone="3142-6702"}; //구조체 멤버 변수를 지정하여 초기화
struct person pArray[3]; //구조체를 배열로
선언
printf("이름, 전화번호 순으로 입력: "); //반복문을 쓰면 한번에 여러개를 입력 가능
scanf("%s %s", pArray[i].name,
pArray[i].phone);
struct person * pMan; // pMan은 구조체를
가리키는 포인터
return 0;
}
구조체 포인터
struct person * p;
--------------------------
구조체 용도...사용법
구조체도 call by reference ... call by value 의 방법으로 함수에 전달이
가능하고
동일한 구조체 끼리의 연산도 가능하다.
p2=p1;
char *number=p2.phone;
구
조체가 구조체에 포함되는 것도 가능함, 중첩된 구조체
struct
point
{
int x;
int y;
};
struct circle
{
struct point p;
double radius;
};
중춥된 구조체의 초기화
struct
circle c = {1, 2, 3.0 };
struct circle c = { {1, 2}, 3.0};
두 가지
형태 모두 가능
struct circle c={1, 2} << point p의 요소는 x=1, y=2로..
radius는 default인 0으로 초기화
struct circle c={ {1}, 2} << point p의
x=1, y는 default인 0으로, radius=2.0 으로 초기화
---------------typedef를
이용한 구조체 정의 쉽게 만들기---------------------
typedef 는 이미 존재하는 자료형에 이름을 붙이기
위한 용도로 사용된다.
#include <stdio.h>
struct Data
{
int data1;
int data2;
};
typedef
struct Data Data;
int main(void)
{
Data d={1,2};
printf("%d, %d,
\n", d.data1, d.data2);
return 0;
}
-----------
typedef struct Data
{
int
data1;
int data2;
} Data;
공
용체-----------
구조체와 비슷한데 약간 다른점..
: 멤버 중 가장 메모리를 많이 요구하는 멤버에 초점을
맞춰서 메모리를 할당한다.
구조체와는다르게 개별적으로 메모리를 할당받지 않고 통합적으로 한개의 메모리를 할당받는다.
동
시에 여러개가 저장되지 못한다.
--하드웨어 프로그래밍 시 많이 사용된다고 한다.
union data
{
int
d1;
double d2;
char d3;
};
열혈강의 523p
열거형
-------------------------선언방법 및 사용 527p
enum color {RED=1, GREEN=3,
BLUE=5};
숫자를 지정해주면 그 숫자가 입력
enum color {RED, GREEN=100, BLUE};
이
렇게 선언하면
RED=0, GREEN=100, BLUE=101으로 선언
#include
<stdio.h>
enum days {MON, TUE, WED, THU, FRI, SAT, SUN} //
숫자를 지정하지 않으면 순서대로 입력
int main(void)
{
enum days day;
printf("Input a day(0:Monday~6:Sunday) : ");
scand("%d",&day);
switch (day)
{
case MON :
printf("수영을 하세요.\n");
break;
case TUE :
printf("조깅을 하세요.\n");
break;
case......
...............
...
}
return 0;
}
실
행결과
Input a day(0:Monday ~ 6:Sunday) : 1(ENTER)
수영을 하세요.