본문 바로가기
프로그래밍/c++

c++ 24. 구조체 struct

by 지나팩 2024. 4. 16.

C++에서 구조체(structure)는 여러 데이터 항목을 하나의 단위로 묶는데 사용됩니다. 이러한 구조체는 관련 데이터를 그룹화하여 더 효율적인 프로그램 관리를 가능하게 합니다. 구조체는 일반적으로 사용자 정의 데이터 타입으로서, 다양한 데이터 타입의 변수들을 포함할 수 있습니다.

 

구조체를 사용함으로써의 이점은 아래와 같습니다.

  1. 데이터 그룹화: 구조체는 관련된 데이터 항목들을 하나의 단위로 묶어주어, 데이터 관리를 쉽고 효율적으로 만듭니다. 예를 들어, 학생에 관한 정보(이름, 학번, 점수 등)를 구조체로 묶으면 각 학생의 정보를 개별적으로 관리하기보다 더 체계적으로 다룰 수 있습니다.
  2. 타입 안전성: 구조체를 사용하면 사용자 정의 데이터 타입을 생성할 수 있으며, 이로 인해 타입 체크가 가능해져 프로그램의 안정성이 향상됩니다. 이는 변수가 예상치 못한 방식으로 사용되는 것을 방지하고, 코드의 오류를 줄이는 데 도움이 됩니다.
  3. 코드 재사용 및 유지보수: 구조체를 사용하면 코드를 모듈화할 수 있어, 유사한 데이터 구조를 필요로 하는 다른 부분의 프로그램에서도 동일한 구조체를 재사용할 수 있습니다. 또한, 구조체 내의 데이터를 수정하거나 확장하는 것이 간편해져 프로그램의 유지보수가 용이해집니다.
  4. 함수 인터페이스 간소화: 여러 데이터 항목을 함수의 매개변수로 넘겨야 할 때, 이를 개별적으로 넘기는 대신 하나의 구조체로 묶어 전달할 수 있습니다. 이는 함수의 인터페이스를 간단하게 만들고, 오류 가능성을 줄여줍니다.
  5. 메모리 할당의 최적화: 구조체를 사용하면 관련 데이터를 메모리상에서 연속적으로 배치할 수 있습니다. 이는 데이터 접근 시간을 단축시켜 성능을 향상시킬 수 있습니다.
  6. 확장성: 새로운 데이터 필드를 추가하거나 기존의 구조를 변경하는 것이 상대적으로 간단하여, 프로그램이 발전함에 따라 구조체를 쉽게 확장할 수 있습니다.
  7. 가독성과 이해도 향상: 구조체를 사용하면 프로그램의 다른 부분과 명확하게 구분되는 데이터 구조를 정의할 수 있으며, 이는 코드의 가독성을 높이고 다른 개발자가 코드를 이해하기 쉽게 만듭니다.

구조체는 클래스와 더불어 다양한 프로그래밍 시나리오에서 매우 유용하게 사용됩니다. 데이터를 효과적으로 조직화하고 관리하는 데 필수적인 도구로, 특히 크고 복잡한 소프트웨어 시스템을 개발할 때 매우 중요합니다.

 

아래는 예시입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <string>
 
// Student 구조체 정의
struct Student {
    std::string name; // 학생 이름
    int id;           // 학번
    float average;    // 평균 점수
};
 
// 구조체를 사용하는 함수
void printStudentInfo(const Student& student) {
    std::cout << "학생 이름: " << student.name << "\n";
    std::cout << "학번: " << student.id << "\n";
    std::cout << "평균 점수: " << student.average << "\n";
}
 
int main() {
    // Student 구조체 인스턴스 생성
    Student student1;
 
    // 인스턴스에 데이터 입력
    student1.name = "김철수";
    student1.id = 1001;
    student1.average = 89.5;
 
    // 학생 정보 출력
    printStudentInfo(student1);
 
    return 0;
}
cs
  • 구조체 정의: struct 키워드를 사용하여 Student라는 이름의 구조체를 정의합니다. 이 구조체는 name, id, average라는 세 개의 멤버 변수를 포함합니다.
  • 멤버 변수: name은 std::string 타입으로 학생의 이름을 저장하며, id는 int 타입으로 학번을, average는 float 타입으로 학생의 평균 점수를 저장합니다.
  • 함수: printStudentInfo 함수는 Student 타입의 참조를 매개변수로 받아, 해당 학생의 정보를 출력합니다. 이 때 const 키워드는 매개변수로 받은 구조체의 멤버 데이터를 변경하지 않겠다는 것을 보장합니다.
  • 메인 함수: main 함수에서는 Student 타입의 변수 student1을 생성하고, 각 멤버 변수에 값을 할당한 후, printStudentInfo 함수를 호출하여 정보를 출력합니다.

이 예제는 C++에서 구조체를 어떻게 정의하고 사용하는지를 기본적으로 설명해 줍니다. 구조체는 클래스와 비슷하지만, 기본적으로 모든 멤버가 public이라는 차이가 있습니다.

'프로그래밍 > c++' 카테고리의 다른 글

c++ 25. 포인터?? 포인터의 개념과 예제 코드  (0) 2024.04.18
c++ 23. Array 컨테이너  (0) 2024.04.03
c++ 22. 다차원 배열  (0) 2024.03.28
c++ 21. 1차원 배열의 크기 찾는 법  (0) 2024.03.28
c++ 20. 배열 Array  (0) 2024.03.13

댓글