구조체란?
C/C++ 프로그래밍 언어에서 구조화된 데이터를 처리할 때 struct를 사용하는 데 이를 구조체라고 합니다. 여기서 구조화되었다는 말은 의미가 연결되어 한 덩어리로 처리하는 방식을 말합니다.
쉽게 말해 int, char, double과 같은 자료형을 사용자가 임의로 만드는 것입니다.
구조체를 만드는 방법
struct 키워드를 사용하여 구조체를 작성합니다. 아래는 구조체 작성 예시입니다.
// 구조체 구조
struct structureName
{
elements(valueType valueName);
}// student 타입(형)의 구조체
struct student
{
char name[10];
int id;
int grade;
char classname[10];
}
학생이라는 자료형에는 이름, 학번, 학년, 학과 등의 요소를 담았습니다. 구조체 키워드는 struct
입니다. student
는 이 구조체의 이름입니다.
student 구조체를 만들었으면 선언을 해보겠습니다.
struct student
{
char name[10];
int id;
int grade;
char classname[10];
}int main()
{
struct student person; // student 형태로 만든 person
return 0;
}
구조체 student를 정의했고 main 함수 안에 그 구조체의 변수 person을 선언했습니다. 이 person을 가지고 구조체 안의 변수에 접근하여 값을 읽고 쓸 수 있게 됩니다.
구조체 배열
student 정보를 저장하는 구조체를 만들어서 수십수백 명의 정보를 저장해야 한다고 하면, 일반 변수처럼 구조체도 일일이 선언하는 것보다 배열을 쓰는 것이 훨씬 편리합니다. 구조체 배열을 선언하는 방법은 일반적인 배열을 선언하는 방법과 같습니다.
int main()
{
struct student person[20];
// student 형태로 만든 person을 20개 생성 person[0].id = 0; person[1].id = 1;
person[1].grade = 1; person[2].id = 2; person[3].id = 3; person[4].id = 4;
}
struct student person[20];
과 같이 struct 키워드와 구조체 이름으로 구조체 변수를 선언하면서 [ ] (대괄호) 안에 크기를 넣어주면 배열로 선언할 수 있습니다.
구조체 배열에서 각 요소에 접근하려면 배열 뒤에 대괄호를 사용하며 대괄호 안에 인덱스를 지정해 주면 됩니다. 이 상태에서 다시 멤버에 접근하려면 .(점)을 사용합니다. 즉, person[0].x는 구조체 배열의 첫 번째 요소에서 멤버 x에 접근한다는 뜻입니다.
구조체 사용 예시
국가라는 구조체 안에 이름, 크기, 인구 요소를 담고 main 함수에서 for 문을 사용하여 이름은 0 ~ 4, 크기는 100 ~ 500, 인구 수는 1000 ~ 5000의 값을 저장하는 예시입니다.
아래는 예시 결과입니다.