본문 바로가기

Language/C

구조체


●구조체

한 개체와 관련된 서로 다른 데이터 형들을 묶어서 하나의 자료형으로 표현한 것이다.

이때 한 개체는 서로 데이터 형들이 다르다 이를 묶어서 자료형을 만든다는 의미이다.

◎구조체 정의

<형식>

struct structure-name{

field-type field-name;

field-type field-name;

(자료형) (변수명)

};

이때 정의는 반드시 메인함수 밖에서 해줘야한다.

ex)struct student{//반드시 매인함수 밖에 정의 해준다...

int number;//number을 int 형으로 정의

char name[30];//name을 char형으로 정의

int year;//year을 int 형으로 정의

};

이 정의에서 구조체 명은(structure-name)생략이 가능하다. 하지만 새로운 변수를 선언할 수 없다.

◎구조체를 사용하여 변수를 선언

<형식>

struct bin printer_cable_bin;//프린터 케이블을 저장하는 통

struct bin terminal_cable_box;//터미널 케이블 저장

(자료형) (변수명)

이는 곧 struct bin 이라는 자료형을 가진 printer~의 변수를 만드는 것이다.

ex>struct bin printer_cable_bin = {"Printer calbes",0,1500};

구조체는 정의와 변수를 한꺼번에 가능하다.

ex)stuct bin{

char name[30];

int quantity;

int cost;

}printer_cable_bin = {"Printer Cables",0,1500};

◎구조체 멤버 참조(구조체 멤버에 입⦁출력하기)(포인터로 접근시->)

구조체의 각 필드에 접근하기 위해서는 멤버참조 연산자(.)를 사용해야한다.

ex)printer_cable_bin.cost=2000;

의 방법으로 입⦁출력시에 접근할 때 따로따로 참조를 해야한다.

◎구조체의 예제소스

#include<stdio.h>

#include<conio.h>

#include<string.h>

 

struct student{//반드시 매인함수 밖에 정의 해준다...

int number;//number을 int 형으로 정의

char name[30];//name을 char형으로 정의

int year;//year을 int 형으로 정의

};

 

void main()

{

struct student s1={315, "Seo Hyeonu",4};//구조체 변수s1을 선언 과 초기화

struct student s2;//구조체 변수 s2를 선언

 

//멤버참조 연산자(.)로 접근하여 입.출력한다.(포인터 로 접근시(->))

s2.number=314;//구조체 변수를 초기화

strcpy(s2.name,"Park");//strcpy를 통하여 s2.name배열에 복사 해준다.

s2.year=3;

 

printf("s1 name : %s, number : %d, year : %d\n",

s1.name, s1.number, s1.year);

printf("s2 name : %s, number : %d, year : %d\n",

s2.name, s2.number, s2.year);

 

getch();

}