구조체 모습
struct 구조체 태그 이름{
자료형1 변수명1;
자료형2 변수명2;
자료형3 변수명3;
};
구조체 변수 선언
struck book {
char title[50];
char author[50];
char publish[50];
}
int main(void)
{
struck book mybook;
}
구조체 태그이름을 사용하지 않으면 구조체의 변소를 선언할 때마다 구조체의 전체 구조를 다시 기술해야 됨
struct {
char title[50];
char author[50];
char publish[50];
} mybook;
struct {
char title[50];
char author[50];
char publish[50];
} yourbook;
typedef를 이용한 구조체 정의
1. 구조체 태그이름 사용
struct book {
char title[50];
char author[50];
char publish[50];
int pages;
int price;
};
typedef struct book book;
int main(void)
{
book your book;
}
2. 구조체 태그이름 사용하지 않음
typedef struct {
char title[50];
char company[50];
char kinds[50];
} software;
int main(void)
{
soft visual;
soft turboc;
}
구조체 초기값
struct book {
int page;
int price;
}
typedef struct book book;
int main(void)
{
book mybook = {"200", "2500"};
}
구조체 멤버 및 구조체 대입
struct complex {
double real;
double img;
};
typedef struct complex complex;
int main(void)
{
sturct complex {
double rea;
double img;
}comp;
complex complex comp1 = {3, 4}, comp2 = {2, 5};
comp.real = comp1. real;
comp.img = comp2.img;
//comp = comp3; 서로 자료형이 다르므로 에러 발생
}
구조체 포인터
struct univ {
char title[50];
char address[50];
int strudents;
};
int main(void)
{
struct univ ku = {"한국대학교", "서울시 서초구", 5000"};
struct univ *ptr = &kr;
}
(*ptr).title 포인터 ptr이 가리키는 구조체의 멤버 title
ptr->title 위와 같은 의미로 포인터ptr이 가리키는 구조체의 멤버 title
*kr.title *(ku.title)을 의미하며, 구조체 변수 ku의 멤버 포인터 title이 가리키는 변수로, 이 경우는 구조체 변수 ku의 학교 이름의 첫 문자임
*ptr->title *(ptr->title)을 의미하며 포인터ptr이 가리키는 구조체의 멤버title이 가리키는 변수로 이 경우는 구조체 포인터ptr이 가리키는 구조체의 학교 이름의 첫 문자임