연관된 변수들을 하나로 묶어서 새로운 타입을 만들어내는 것
서로 다른 타입들을 하나로 묶는 것도 가능함
게임에서 구조체를 사용하기도 함
{
체력
마력
공격력
방어력
}
아이템
{
이름
가격
레어도
}
수강생
{
이름
나이
전화번호
이메일
}
구조체 사용법
struct 타입이름
{
타입 멤버 변수명;
타입 멤버 변수명;
}
.(dot operator) // 접근가능한 변수가 나옴
struct Status // 쓰던 변수들을 하나로 묶어서 새로운 타입으로 만들어냄
{
int hp;
int mp;
int strength;
int magic;
};
Status warrior;
warrior.hp = 100;//.찍으면 접근 가능한 변수가 나옴
// 구조체.멤버의 형태
//워리어 라는 구조체에 hp멤버에 100을 대입함
// 연산자 우선순위 . 다음에 =(대입)
warrior = 100; // 불가능함
}
//선언
Status warrior;
//정의
warrior.hp = 100;
warrior.mp = 0;
warrior.strength =10;
warrior.magic = 0;
// 초기화
Status warrior{100,0,10,0};
//출력
std::cout<<warrior.hp<<std::endl;
std::cout<<warrior.mp<<std::endl;
std::cout<<warrior.strength<<std::endl;
std::cout<<warrior.magic<<std::endl;
// 값이 안주어지면 기본값으로 초기화됨
Status warrior{100,0 };
유니폼 초기화 식
int x{}; // 0으로 초기화됨
// 실수도 막고 타입도 알려주고 0으로 초기화되서 안전함
struct Status
{
int hp{}; //멤버 초기화-안전한 방법 유니폼 초기화를 쓰는게 좋음
int mp{}; //하지만 마지막에 유니폼 초기화 하나만 쓰는게 편함
int strength{};
int magic{};
};
Status warrior{100,0,10,0}; //마지막으로 입력한 값이 들어가게 됨
warrior = Status {10,0};
// 명시적 형변환 Status가 바꿀 타입 ( )는 안됨\
warrior.hp = 10;
warrior.mp = 0;
warrior = {}; //0을로 초기화됨
구조체 끼리는 형 변환이 불가능