서로 다른 자료형을 갖는 자료들의 집합이다.
// 구조체 선언 원형
struct 구조체이름
{
변수1_자료형 변수1_이름;
변수2_자료형 변수2_이름;
}
기존에는 서로 다른 자료형의 변수를 일일이 선언해 주었다.
값 또한 일일이 scanf() 혹은 getchar()을 이용해 할당해 주어야 했다.
// 이름, 과목, 점수를 받을 변수 선언
char name[];
char subject[];
double score;
// 변수에 값을 할당
scanf("%s", name);
scanf("%s", subject);
scanf("%.1lf", &score);
하지만 이러한 과정을 구조체 하나를 선언하여 단순화시킬 수 있다.
// 이름, 과목, 점수를 지닌 구조체 선언
struct student // "student"라는 구조체 선언
{
char name[];
char subject[];
double score;
} s; // 구조체 변수 "s" 선언
// 구조체 변수 초기화
struct student s = {이름, 과목, 점수}
// 구조체 선언 후, "NUM"으로 재정의
struct num
{
num1;
num2;
}NUM;
typedef struct num NUM;
// 구조체를 선언하며, "NUM"으로 재정의
typedef struct num
{
num1;
num2;
}NUM;
// 구조체 변수를 배열 형식으로 선언
struct num
{
num1;
num2;
}s[(정수)]; // 구조체 배열 선언
// .(dot) 연산자
. 는 클래스의 멤버를 직접적으로 접근한다.
(구조체 변수 이름).(맴버명)
// -> 연산자
-> 는 포인터를 통해 멤버를 간접적으로 접근한다.
(구조체 포인터)->(맴버명)