C++/C++ 이론
[C++] 구조체(struct) / 공용체(union) / 열거체(enum)
renne
2022. 7. 16. 10:40
구조체(struct)
- 배열: 같은 데이터형의 집합
- 구조체: 다른 데이터형이 허용되는 데이터의 집합
#include <iostream>
using namespace std;
int main(){
struct Player{
string name;
float height;
}A;
A.name = "Sirius Black"; //구조체 멤버 연산자 '.'
A.height = 186.7;
Player B = {"Regulus Black", 176.7}; //초기화
Player C = {}; //빈 값은 0으로 저장된다.
Player D[2] = {{"James Potter", 188.5}, {"Remus Lupin", 181.3}}; //구조체 배열
cout << A.name << "\t" << A.height << endl;
cout << B.name << "\t" << B.height << endl;
cout << C.name << "\t" << C.height << endl;
cout << D[0].name << "\t" << D[0].height << endl;
cout << D[1].name << "\t" << D[1].height << endl;
return 0;
}
<실행 결과>
Sirius Black 186.7
Regulus Black 176.7
0
James Potter 188.5
Remus Lupin 181.3
공용체(union)
- 서로 다른 데이터형을 한 번에 한 가지만 보관할 수 있다.
#include <iostream>
using namespace std;
int main(){
union Test{
int intVal;
long longVal;
};
Test test;
test.intVal = 3;
cout << test.intVal << endl; //3 출력
test.longVal = 33; //이전에 저장했던 데이터가 소실된다.
cout << test.intVal << endl; //33 출력
cout << test.longVal << endl; //33 출력
return 0;
}
열거체(enum)
- 기호 상수를 만드는 것에 대한 또다른 방법
- 열거자들을 상수로 관리한다.
- 열거자 간의 산술 연산은 지원되지 않는다.
#include <iostream>
using namespace std;
int main() {
//spectrum을 새로운 데이터형 이름으로 만든다.
//열거자들을 상수로서 관리한다.
enum spectrum{red, orange, yellow, green, blue, violet}; //0, 1, 2, 3, 4, 5, 6
spectrum a = red, b = orange, c = yellow;
cout << a << endl; //0
cout << b << endl; //1
cout << c << endl; //2
//열거자 간의 산술 연산은 지원되지 않는다. ex) orange + yellow = 3 (x)
//그러나, int형 변수에 열거자를 대입할 때, 열거자의 값은 int형 정수로 계산돼서 대입된다.
int d = green + 3; //3 + 3 = 6
cout << d << endl; //6
enum week{mon = 1, tue = 3, wed = 5}; //열거자의 값을 명시적으로 정할 수 있다. (정수)
cout << wed << endl; //5
return 0;
}