728x90
728x90
SMALL
구조체 생성 및 멤버들 초기화
- 정의할땐 끝에 ; 꼭 붙이기
- 중괄호 사용 { }
ο Person me{175.0, 65.0f, 20, “Jack”} ;
struct Person{
double height;
float weight
int age;
string name;
}**;**
int main()
{
/* Person 구조체타입의 me, mom, dad 생성*/
Person mom;
Person dad;
/* 일일이 초기화*/
me.age = 20;
me.name = "Jack";
me.height = 175.0;
me.weight = 65.0f;
/* 생성과 동시에 초기화도 한번에*/
Person me{175.0, 65.0f, 20, "Jack"};
}
- 초기화값이 기본값보다 우선순위가 높다.
ο 초기화 안하면 기본값으로 들어가게 된다.
ο Person me{175.0, 65.0f, 20, "Jack"};
■ me는 이렇게 초기화 된다.
ο Person mom;
■ 초기화를 안해주었으니 기본값대로 설정된다.
struct Person{
double height = 170.0; // 기본값
float weight = 100.0f; // 기본값
int age; = 25; // 기본값
string name = "Mr. Incredible"; // 기본값
}**;**
int main()
{
/* 일일이 초기화*/
me.age = 20;
me.name = "Jack";
me.height = 175.0;
me.weight = 65.0f;
/* Person 구조체타입의 me, mom, dad 생성*/
Person me{175.0, 65.0f, 20, "Jack"}; // me는 이렇게 초기화 된다.
Person mom; // 기본값대로 변수값들이 설정된다.
Person dad; // 기본값대로 변수값들이 설정된다.
}
구조체를 쓰는 이유
1. 관련있는 여러가지 변수를 다 파라미터로 넘기기엔 복잡
→ 관련 있는 변수들을 구조체로 묶으면 구조체 이름만 넘기면 됨
void printPerson(Person ps)
{
cout << ps.height << " " << ps.weight << " " << ps.age << " " << ps.name;
cout << endl;
}
int main()
{
Person me{175.0, 65.0f, 20, "Jack"};
printPerson(me);
}
ο 구조체 이름 넘길 필요도 없이 함수를 구조체 안에 정의하면 매개변수 없이도 쓸 수 있다.
■ 함수를 구조체 안에서 정의하면 그냥 바로 멤버변수 갖다 쓸 수 있다.
■ ps.name 이라고 쓸 필요 없이 그냥 name
■ me.print(); 로만 사용하면 끝.
struct Person
**{**
double height;
float weight
int age;
string name;
void print()
{
cout << height << " " << weight << " " << age << " " << name;
cout << endl;
}
};
int main()
{
Person me{175.0, 65.0f, 20, "Jack"};
me.print();
}
2. 키, 몸무게, 나이 사람마다 각각 3개씩 변수 또 만들기에는 너무 부담된다.
→ 키, 몸무게, 나이를 한 구조체로 묶으면 됨
struct Person{
double height;
float weight
int age;
string name;
};
3. 다양한 자료형을 묶어 마치 하나의 자료형인 것처럼 사용할 수 있게 된다.
구조체 멤버들 복사
Person Jack{175.0, 65.0f, 20, "Jack"};
Person Suzan(Jack);
Person Leo = Jack;
- Suzan 도, Leo도, 둘 다 Jack의 멤버 값들이 각각의 멤버값들로 복사가 된다.
ο 단, 멤버중에 string 같이 객체가 있으면 복사가 제대로 안될 수 있다.
구조체 멤버들의 크기 : 패딩 padding
struct Employee
{
shor id;
int age;
double wage;
}**;**
int main()
{
Employee emp1;
cout << sizeof(Employee) << endl; // 14가 아닌 16이 나온다.
}
- 4byte 단위로 딱 맞추기 위해서 short int 부분에 빈 공간 2byte를 패딩으로 집어넣음
- 이렇게 Employee 구조체의 크기는 14가 아닌 16이 된다.
728x90
300x250
LIST
'C │ C++ │ C# > C++' 카테고리의 다른 글
C++ Chapter 5.2 : 반복문$($while, do-while, for$)$과 점프$($break, continue, goto$)$ (0) | 2023.08.22 |
---|---|
C++ Chapter 5.1 : 조건 분기 (if문, switch-case문) (0) | 2023.08.22 |
C++ Chapter 4.7 : 기존 자료형에게 가명 붙여주기 (0) | 2023.08.21 |
C++ Chapter 4.6 : 열거형과 열거형 클래스 (1) | 2023.08.20 |
C++ Chapter 4.5 : 문자열 std::string 소개 (0) | 2023.08.20 |