**Autonomous driving tech./*C++

[C++] 07_구조체( struct )

2wnswoo 2024. 9. 16. 12:55

1. 구조체

구조체와 배열의 다른 점이라고 하면 배열은 같은 데이터형의 집합이지만 구조체는 다른 데이터형이 허용되는 데이터의

집합이라고 할 수 있다. 어떤 객체를 표현할때 1가지의 변수 만으로는 부족한 경우가 있다. 예를 들어 학생이란 객체를 표현하려한다면이름, 나이, 학교, 학년, 학번, 전공 등등의 다양한 특징에 대한 변수가 필요하게 된다.

학생이 1명뿐이라면 이렇게 6개 변수를 일일이 선언하여 사용하여도 상관없지만 학생수가 많아 진다면 학생이 추가될때마다 일일이 새롭게 6개 변수를 추가해야 한다. 이런 점을 극복하기 위해 C++에서는 여러 개별 변수를 그룹화 하여 하나의 데이터 유형으로 생성할 수 있는 구조체를 제공한다. 배열이 같은 타입의 변수 집합이라고 한다면, 구조체는 다양한 타입의 변수 집합을 하나의 타입으로 나타낸 것 이라고 이해하면 된다. 이때 구조체를 구성하는 변수를 구조체의 멤버( member ) 또는 멤버 변수( member variable )라고 하며 변수 뿐만 아니라 함수도 멤버 변수로 가질 수 있다.

 

즉, 구조체( structure )는 사용자가 하나 이상의 기본 타입을 가지고 새로운 자료형을 정의하는 사용자 정의 타입이다.

또한 구조체는 객체 지향 프로그래밍의 기본인 클래스 ( class )의 기본이 되므로 잘 기억 하자.

 

2. 선언 및 정의

struct 구조체명 {

 타입 멤버변수1;

 타입 멤버변수2;

...

};

#include <iostream>
using namespace std;

   struct student{
    string name;
    string school;
    string major;
    int age;
    int grade;
    int stu_num;
   };

int main() {

    student stu1;
    stu1.name = "홍길동";
    stu1.school = "대학교";
    stu1.major = "수학과";
    stu1.age = 26;
    stu1.grade = 4;
    stu1.stu_num = 2013024863;

    cout << stu1.name << endl;
  return 0;
}

 

3. 구조체로 배열 만들기

#include <iostream>
using namespace std;

int main() {

    struct MyStruct
    {
        string name;
        string position;
        int height;
        int weight;
    };


    MyStruct A[2] = {                             // 구조체를 이용하여 사이즈2인 A라는 이름의 배열 생성하기
        {"Messi", "Striker", 65, 171},       // 중괄호 속 중괄호를 넣어 만들어준다.
        {"Ronaldo", "Striker", 74, 183}
    };

    cout << A[1].name << endl;
>>>  Ronaldo ( 결과값 )
  return 0;
}

 

 

위 내용은 '인프런 C++ 강의'의 일부를 정리한 내용입니다.