본문 바로가기

공부/c언어

구조체 (c언어)

반응형

구조체 모습

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이 가리키는 구조체의 학교 이름의 첫 문자임

 

 

 

 

 

 

반응형