●구조체
한 개체와 관련된 서로 다른 데이터 형들을 묶어서 하나의 자료형으로 표현한 것이다.
이때 한 개체는 서로 데이터 형들이 다르다 이를 묶어서 자료형을 만든다는 의미이다.
◎구조체 정의
<형식>
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();
}