구조체(structure)는 서로 다른 데이터 타입의 항목들을 하나로 묶어 놓은 집합입니다. 다양한 자료형을 가진 복잡한 데이터 레코드를 만들 때 매우 유용하며, C++에서는 struct 키워드를 사용해 정의합니다.
구조체의 기본 정의
구조체는 다음과 같이 정의할 수 있습니다.
struct employee {
int empID;
char name[50];
float salary;
};위 예제처럼 구조체 안에는 정수, 문자열, 실수 등 여러 자료형을 자유롭게 포함시킬 수 있습니다.
학생 정보를 저장하는 C++ 프로그램
아래는 구조체를 사용하여 학생 정보(학번, 이름, 점수, 학점)를 저장하고 출력하는 전체 프로그램입니다.
예제 코드
#include <iostream>
using namespace std;
struct student {
int rollNo;
char name[50];
float marks;
char grade;
};
int main() {
struct student s = { 12 , "Harry" , 90 , 'A' };
cout<<"The student information is given as follows:"<<endl;
cout<<endl;
cout<<"Roll Number: "<<s.rollNo<<endl;
cout<<"Name: "<<s.name<<endl;
cout<<"Marks: "<<s.marks<<endl;
cout<<"Grade: "<<s.grade<<endl;
return 0;
}실행 결과
The student information is given as follows: Roll Number: 12 Name: Harry Marks: 90 Grade: A
코드 상세 설명
1. 구조체 정의
위 프로그램에서 구조체는 main() 함수보다 먼저 정의되었습니다. 이 구조체에는 학생의 학번(roll number), 이름(name), 점수(marks), 학점(grade)이 포함됩니다.
struct student {
int rollNo;
char name[50];
float marks;
char grade;
};2. 구조체 변수 선언 및 초기화
main() 함수 내부에서 struct student 타입의 객체 s를 선언하고, 중괄호를 이용해 각 멤버 값을 한 번에 초기화했습니다.
struct student s = { 12 , "Harry" , 90 , 'A' };값의 순서는 구조체 정의 시 멤버가 나열된 순서와 일치해야 합니다. 즉, 학번 → 이름 → 점수 → 학점 순으로 대입됩니다.
3. 구조체 값 출력하기
점 연산자(.)를 사용하면 구조체의 개별 멤버에 접근할 수 있습니다. 출력 부분은 다음과 같습니다.
cout<<"The student information is given as follows:"<<endl; cout<<endl; cout<<"Roll Number: "<<s.rollNo<<endl; cout<<"Name: "<<s.name<<endl; cout<<"Marks: "<<s.marks<<endl; cout<<"Grade: "<<s.grade<<endl;
정리
이 예제를 통해 C++ 구조체의 핵심 개념을 확인할 수 있습니다.
- struct 키워드로 서로 다른 자료형을 하나의 단위로 묶을 수 있습니다.
- 중괄호 초기화 리스트를 사용하면 구조체 멤버를 한 번에 설정할 수 있습니다.
- 점 연산자(
.)를 통해 개별 멤버에 접근하고 값을 읽거나 수정할 수 있습니다. - 구조체는 학생 정보, 직원 정보 등 관련 데이터를 그룹화할 때 특히 유용합니다.
실무에서는 이러한 구조체를 배열이나 벡터와 결합해 여러 명의 학생 정보를 한꺼번에 관리하는 방식으로 확장할 수도 있습니다.