Program Language/C++ 언어

09. C++ 구조체의 기본과 활용

parkes811 2024. 5. 31. 00:23

  • C++ 구조체: 기본과 활용

- C++의 구조체(struct)는 여러 데이터를 하나의 단위로 묶어주는 사용자 정의 데이터 타입입니다.

- 구조체는 연관된 데이터를 하나의 그룹으로 관리할 수 있도록 도와줍니다. 

 

  • 구조체의 기본 개념
struct 구조체명 { 
	데이터타입 변수명1; 데이터타입 변수명2; // 추가 멤버 변수 
};

struct Student { 
	std::string name; int age; double grade; 
};

 

위 코드에서 Student라는 구조체는 학생의 이름, 나이, 성적을 저장하는 세 개의 멤버 변수를 포함하고 있습니다.

 

  • 구조체 변수 선언과 초기화

- 구조체를 정의한 후에는 구조체 변수를 선언하고 초기화할 수 있습니다.

- 다음은 Student 구조체 변수를 선언하고 초기화하는 예제입니다:

Student student1 = {"Alice", 20, 3.8};

 

- 구조체 변수를 초기화할 때는 중괄호 {}를 사용하여 멤버 변수를 순서대로 지정합니다.

 

  • 구조체 멤버에 접근

구조체 변수의 멤버에 접근하려면 도트 연산자(.)를 사용합니다. 예를 들어, student1 변수의 이름과 성적을 출력하려면 다음과 같이 할 수 있습니다:

std::cout << "Name: " << student1.name << std::endl; 
std::cout << "Grade: " << student1.grade << std::endl;

 

  • 구조체 배열

- 구조체 배열을 사용하면 여러 개의 구조체 변수를 하나의 배열로 관리할 수 있습니다.

- 예를 들어, 여러 학생의 정보를 저장하는 배열을 선언하려면 다음과 같이 합니다:

Student students[3] = { {"Alice", 20, 3.8}, {"Bob", 22, 3.6}, {"Charlie", 21, 3.9} };

// 배열 요소에 접근하려면 인덱스를 사용하여 접근할 수 있습니다:
std::cout << "First student's name: " << students[0].name << std::endl;

 

  • 구조체와 함수

- 구조체를 함수의 인수로 전달하거나 함수에서 반환할 수 있습니다. 다음은 구조체를 인수로 받는 함수의 예제입니다:

void printStudentInfo(const Student& student) { 
    std::cout << "Name: " << student.name << std::endl; 
    std::cout << "Age: " << student.age << std::endl; 
    std::cout << "Grade: " << student.grade << std::endl; 
}
- 이 함수는 Student 구조체 변수를 인수로 받아 학생의 정보를 출력합니다.
 
  • 중첩된 구조체

- 구조체는 다른 구조체를 멤버로 가질 수 있습니다.

- 예를 들어, 이름을 저장하는 구조체와 친구 정보를 저장하는 구조체를 정의해 보겠습니다:

struct Name { 
	std::string first; std::string last; 
}; 

struct Friends { 
	Name fullName; std::string address; std::string job; 
};
 

이 예제에서 Friends 구조체는 Name 구조체를 멤버 변수로 포함하고 있습니다.

 

  • 구조체의 활용: 함수와 구조체

- 구조체는 함수의 인수로 전달하거나 함수의 반환값으로 사용할 수 있습니다.

- 다음 예제는 구조체를 인수로 전달하는 방식과 반환값으로 사용하는 방식을 보여줍니다:

struct Prop { 
	int savings; int loan; 
}; 

int CalcProperty(const Prop& property) { 
	return property.savings - property.loan; 
} 

Prop InitProperty() { 
	return {10000000, 4000000}; 
} 

int main() { 
    Prop hong = InitProperty(); 
    int hong_prop = CalcProperty(hong); 
    std::cout << "홍길동의 재산: " << hong_prop << "원" << std::endl; 
    return 0; 
}

위의 예제에서 CalcProperty 함수는 Prop 구조체를 인수로 받아 재산을 계산하며, InitProperty 함수는 Prop 구조체를 반환합니다.