C++에서 구조체 사용하기
C++에서 구조체(struct)는 관련된 데이터를 하나의 그룹으로 묶는 방법을 제공합니다. 클래스와 비슷하지만, 기본적으로 모든 멤버가 public입니다. 구조체는 데이터를 모으고, 가벼운 객체를 만드는 데 유용하며, 데이터 처리에 있어 간결함과 편리함을 제공합니다.
구조체의 정의 및 사용
구조체를 정의하고 사용하는 기본 예제를 통해 구조체의 작동 방식을 살펴보겠습니다.
#include <iostream>
#include <string>
// 구조체 정의
struct Student {
std::string name;
int age;
double gpa;
};
int main() {
// 구조체 인스턴스 생성
Student student1;
student1.name = "John Doe";
student1.age = 20;
student1.gpa = 3.5;
// 구조체 인스턴스의 정보 출력
std::cout << "Student Name: " << student1.name << std::endl;
std::cout << "Age: " << student1.age << std::endl;
std::cout << "GPA: " << student1.gpa << std::endl;
return 0;
}
구조체 초기화
C++11 이상에서는 구조체의 멤버를 초기화하는 더 편리한 방법을 제공합니다. 이를 통해 코드를 더욱 깔끔하고 명확하게 작성할 수 있습니다.
#include <iostream>
#include <string>
struct Student {
std::string name;
int age;
double gpa;
// 생성자를 사용한 초기화
Student(std::string n, int a, double g) : name(n), age(a), gpa(g) {}
};
int main() {
// 생성자를 사용하여 객체 생성과 동시에 초기화
Student student1("Jane Doe", 21, 3.8);
std::cout << "Student Name: " << student1.name << std::endl;
std::cout << "Age: " << student1.age << std::endl;
std::cout << "GPA: " << student1.gpa << std::endl;
return 0;
}
구조체와 배열
구조체와 배열을 함께 사용하면, 동일한 유형의 여러 데이터를 효율적으로 관리할 수 있습니다. 다음 예제에서는 구조체 배열을 사용하여 여러 학생의 정보를 저장하고 출력하는 방법을 보여줍니다.
#include <iostream>
#include <string>
struct Student {
std::string name;
int age;
double gpa;
};
int main() {
// 구조체 배열 선언 및 초기화
Student students[2] = {
{"Alice Johnson", 19, 3.9},
{"Bob Smith", 22, 3.6}
};
// 배열의 구조체 요소에 접근하여 출력
for (int i = 0; i < 2; i++) {
std::cout << "Student Name: " << students[i].name << std::endl;
std::cout << "Age: " << students[i].age << std::endl;
std::cout << "GPA: " << students[i].gpa << std::endl;
}
return 0;
}
구조체는 C++에서 데이터를 효과적으로 관리하기 위한 강력한 도구입니다. 클래스와 유사하게 작동하지만, 기본적으로 모든 멤버가 공개되어 있어서 데이터 접근이 간편합니다. 구조체를 사용하면 코드의 가독성과 유지 관리성이 향상될 수 있습니다.
C++ 구조체의 활용: 함수 인수 및 반환 예제
구조체를 사용하여 함수의 인수와 반환 값을 관리하는 방법을 살펴보겠습니다. 구조체를 통해 여러 데이터를 함께 전달하고 처리할 수 있으며, 이는 코드의 가독성과 유지 관리를 향상시킬 수 있습니다.
예제 1: 구조체를 인수로 사용
#include <iostream>
using namespace std;
// 구조체 정의
struct Property {
int savings;
int loan;
};
// 함수 선언: 구조체 멤버를 직접 인수로 받음
int calculateNetWorth(int savings, int loan) {
return savings - loan;
}
int main() {
Property hong = {10000000, 4000000}; // 구조체 초기화
int netWorth = calculateNetWorth(hong.savings, hong.loan); // 함수 호출
cout << "홍길동의 순자산은 " << netWorth << "원입니다." << endl;
return 0;
}
예제 2: 구조체 주소를 인수로 사용
구조체의 주소를 인수로 전달하는 방식은 메모리를 절약할 수 있으며, 원본 데이터를 함수 내에서 직접 변경할 수 있습니다.
#include <iostream>
using namespace std;
struct Property {
int savings;
int loan;
};
// 함수 선언: 구조체 포인터를 인수로 받음
int modifyAndCalculate(Property* p) {
p->savings += 500000; // 변경 가능
return p->savings - p->loan;
}
int main() {
Property hong = {10000000, 4000000};
int netWorth = modifyAndCalculate(&hong); // 주소 전달
cout << "수정 후 홍길동의 순자산은 " << netWorth << "원입니다." << endl;
return 0;
}
예제 3: 구조체를 반환값으로 사용
#include <iostream>
using namespace std;
struct Property {
int savings;
int loan;
};
// 함수 선언: 구조체를 반환
Property createProperty() {
return {15000000, 5000000};
}
int main() {
Property hong = createProperty(); // 함수로부터 구조체 받음
cout << "홍길동의 적금은 " << hong.savings << "원, 대출은 " << hong.loan << "원입니다." << endl;
return 0;
}
구조체를 활용하여 다양한 방식으로 데이터를 조작하고, 함수 간에 효율적으로 데이터를 전달하는 방법을 보여줍니다. 구조체를 사용하면 복잡한 데이터 구조를 쉽게 관리할 수 있습니다.
'C++' 카테고리의 다른 글
[C++] 공용체와 열거체 (2) | 2024.06.09 |
---|---|
[C++] 아두이노로 터치센서 사용하기 (0) | 2024.06.05 |
[C++] 아두이노로 수위센서 사용하기 (0) | 2024.05.08 |
[C++] 포인터의 이해 (0) | 2024.05.07 |
[C++] 아두이노로 스텝모터 사용하기 (0) | 2024.05.02 |