๊ตฌ์กฐ์ฒด
ํ๋์ ๊ตฌ์กฐ์ฒด ์์ ์ฌ๋ฌ ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ ๊ฐ๋ฅ, ์ฌ์ฉ์๊ฐ ์ ์ ๊ฐ๋ฅํ ๋ฐ์ดํฐํ
๊ตฌ์กฐ์ฒด ์์ฑ ๋จ๊ณ
1. ๊ตฌ์กฐ์ฒด ์์ (structure description) ์ ์
๊ตฌ์กฐ์ฒด ์์ ์ ์ฅํ ์ฌ๋ฌ๊ฐ์ง ๋ฐ์ดํฐํ๋ค์ ์์ ํ๊ณ ์ด๋ฆ์ ์ ํจ
2. ๊ตฌ์กฐ์ฒด ๋ณ์(structure variable) ์์ฑ
๊ตฌ์กฐ์ฒด ์์ ์์
struct inflatable // struct: struct ํค์๋ inflatable: ํ๊ทธ, ์๋ก์ด ๋ฐ์ดํฐํ์ ์ด๋ฆ์ด ๋จ (int, double ์ฒ๋ผ)
{
char name[20];
float volume; //๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ
double price;
}; // ์ธ๋ฏธ์ฝ๋ก ์ ํ ํ๋ฆฟ ์ ์ธ์ ๋๋
๊ตฌ์กฐ์ฒด ์์ ์ ๋๋ธ ํ, ๊ทธ ๋ฐ์ดํฐํ์ ๋ณ์๋ค ์์ฑ ๊ฐ๋ฅ
inflatable hat;
inflatable mainframe;
struct inflatable goose; /c๋ ํค์๋ struct๋ฅผ ์๊ตฌํจ
๋ฉค๋ฒ ์ฐ์ฐ์(.)๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์กฐ์ฒด์ ๊ฐ๋ณ์ ๋ฉค๋ฒ์ ์ ๊ทผ ๊ฐ๋ฅ
ex) hat.volume๋ hat ๋ณ์์ volume๋ฅผ ๋ํ๋
๊ตฌ์กฐ์ฒด ์ ์ธ์ ๋๋ ์์น
1. main() ํจ์์ ์์ ์ฌ๋ ์ค๊ดํธ ๋ฐ๋ก ๋ค์ ์ ์ธ
2. main() ํจ์์ ์์ ์ ์ธ -> ์ธ๋ถ ์ ์ธ
์ธ๋ถ ์ ์ธ : ์ ์ธ ์ดํ์ ๋์ค๋ ๋ชจ๋ ํจ์๋ค์ด ์ฌ์ฉ ๊ฐ๋ฅ
๋ด๋ถ ์ ์ธ : ๊ทธ ์ ์ธ์ด ๋ค์ด์๋ ํจ์์์๋ง ์ฌ์ฉ ๊ฐ๋ฅ
๊ตฌ์กฐ์ฒด ์ด๊ธฐํ
struct inflatable
{
char name[20];
float volume;
double price;
};
inflatable guest =
{
"Glorious Gloria", // name ๊ฐ
1.88, //volume ๊ฐ
29.99 //price ๊ฐ
};
inflatable duck = {"fa",0.1,9.9}; // ํ ํ์ผ๋ก๋ ๊ฐ๋ฅ
ํ ์์ ์ค๊ดํธ{} ์์ ์ด๊ธฐํ ๊ฐ๋ค์ด ์ฝค๋ง๋ก ๊ตฌ๋ถ๋๋ ์ด๊ธฐํ ๋ฆฌ์คํธ๋ฅผ ๋ฃ์
๊ตฌ์กฐ์ฒด์ ๊ฐ ๋ฉค๋ฒ๋ ๊ทธ ๋ฐ์ดํฐํ์ ๋ณ์์ฒ๋ผ ์ทจ๊ธ๋จ
pal.name์ charํ์ ๋ฐฐ์ด์ด๋ฏ๋ก cout์ ์ฌ์ฉํ๋ฉด ๋ฌธ์์ด๋ก ์ถ๋ ฅ๋จ
๋ํ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํด ๋ฐฐ์ด ๋ด์ ๊ฐ ๋ฌธ์๋ค์ ์ ๊ทผ ๊ฐ๋ฅ
c++11์ ๊ตฌ์กฐ์ฒด ์ด๊ธฐํ
inflatable duck {"Da",0.1,9.9}; // = ์๋ต ๊ฐ๋ฅ
๊ณต๋ฐฑ์ ๊ฐ์ง๋ ์ค๊ดํธ๋ ๊ฐ๊ฐ ๋ฉค๋ฒ์ ๋ํด 0์ผ๋ก ์ด๊ธฐํํจ
inflatable mayor{}; //mayor.volume๊ณผ mayor.price 0์ผ๋ก ์ด๊ธฐํ
narrowing ๋ถํ์ฉ
๊ตฌ์กฐ์ฒด string ํด๋์ค ๋ฉค๋ฒ ์ฌ์ฉ ์ฌ๋ถ
#include <string>
struct inflatable
{
std::string name;
float volume;
};
1. ๊ตฌ์กฐ์ฒด ์ ์๊ฐ std ์ด๋ฆ ๊ณต๊ฐ์ ์ ๊ทผ
2. std::stringํ ์ฌ์ฉ
1 ๋๋ 2๋ฅผ ์ฌ์ฉํ๋ฉด ๊ตฌ์กฐ์ฒด์์ string ํด๋์ค ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
๊ตฌ์กฐ์ฒด์ ๊ธฐํ ํน์ฑ
์ฌ์ฉ์๊ฐ ์ ์ํ ๋ฐ์ดํฐํ์ ๋ด์ฅ ๋ฐ์ดํฐํ๊ณผ ๋์ผํ ๋ฐฉ์์ผ๋ก ๋ค๋ฃฐ ์ ์์
ex) ๊ตฌ์กฐ์ฒด๋ฅผ ํจ์์ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ, ๊ตฌ์กฐ์ฒด๋ฅผ ๋ฆฌํด ๊ฐ์ผ๋ก ์ฌ์ฉ, ๋์ ์ฐ์ฐ์ ์ฌ์ฉํด์ ๋ค๋ฅธ ๊ตฌ์กฐ์ฒด์ ๋์ (๋ฐฐ์ด๋ ๋์ ๋๋ค.)
๊ตฌ์กฐ์ฒด ํ ํ๋ฆฟ์ ์ ์์ ๊ตฌ์กฐ์ฒด ๋ณ์์ ์์ฑ์ ํ๋๋ก ๊ฒฐํฉ ๊ฐ๋ฅ -> ์ค๊ดํธ ๋ค์ ๋ณ์ ์ด๋ฆ์ ๋๋ค.
struct perks
{
int key;
char car[12];
} mr_s,ms_j; //๋ ๊ฐ์ perksํ ๋ณ์
์ด๋ฌํ ๋ฐฉ์์ผ๋ก ๋ณ์๋ฅผ ์์ฑํ ๋ ์ด๊ธฐํ๋ ํจ๊ป ์ฒ๋ฆฌ ๊ฐ๋ฅ
structk perks
{
int key;
char car[12];
} mr_g=
{
7,
"packard"
};
๋ฐ์ดํฐํ ์ด๋ฆ์ด ์๋ ๊ตฌ์กฐ์ฒด ์์ฑ ๊ฐ๋ฅ
struct
{
int x;
int y;
} position;
๋ฐ์ดํฐํ ์ด๋ฆ์ด ์๊ธฐ ๋๋ฌธ์ ์ดํ์ ๊ฐ์ ํ์ ๋ค๋ฅธ ๋ณ์ ์์ฑ ๋ถ๊ฐ
๊ตฌ์กฐ์ฒด์ ๋ฐฐ์ด
๊ตฌ์กฐ์ฒด์ ๋ฐฐ์ด์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๊ธฐ๋ณธ ๋ฐ์ดํฐํ์ ๋ฐฐ์ด์ ๋ง๋๋ ๊ฒ๊ณผ ๊ฐ๋ค.
inflatable gifts[100];
gifts[0] ๋๋ gifts[99]์ ๊ฐ์ ๋ฐฐ์ด ์์๋ inflatable ํ ๊ฐ์ฒด์ด๋ค.
์ฌ์ฉ ์์
cin>>gifts[0].volume;
cout<<gifts[99].price<<endl;
gifts ์์ฒด๋ ๊ตฌ์กฐ์ฒด๊ฐ ์๋๋ผ ๋ฐฐ์ด์ด๋ฏ๋ก, gifts.price์ ๊ฐ์ ํํ์ ์๋ฏธ๊ฐ ์๋ค.
๊ตฌ์กฐ์ฒด์ ๋ฐฐ์ด ์ด๊ธฐํ = ๊ตฌ์กฐ์ฒด ์ด๊ธฐํ ๊ท์น + ๋ฐฐ์ด ์ด๊ธฐํ ๊ท์น
inflatable guests[2] =
{
{"bambi",0.5,21.99},
{"gasdfi",2000,2155.9},
};
๊ตฌ์กฐ์ฒด ์์ ๋นํธ ํ๋
ํ๋์จ์ด ์ฅ์น์ ์๋ ๋ ์ง์คํฐ์ ๋์ํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค ๋ ๋งค์ฐ ํธ๋ฆฌํจ
1. ํ๋ํ์ ์ ์ํ์ด๋ ์ด๊ฑฐ์
2. ์ฌ์ฉํ ๋นํธ ์๋ ์ฝ๋ฅธ์ ์ฐ๊ณ ์ ์
์ด๋ฆ์ด ์๋ ํ๋๋ฅผ ์ฌ์ฉํด ๊ฐ๊ฒฉ์ ์ค ์๋ ์์
ex)
struct torgle_register
{
unsigned int SN : 4; //SN ๊ฐ (4๋นํธ)
unsigned int : 4; //์ฌ์ฉํ์ง ์์ (4๋นํธ)
bool goodIn : 1; //์ ํจํ ์ ๋ ฅ (1๋นํธ)
bool goodTorgle : 1; //ํ ๊ธ์ ์ฑ๊ณต (1๋นํธ)
};
๋ณดํต์ ๋ฐฉ์์ผ๋ก ํ๋ ์ด๊ธฐํ ๊ฐ๋ฅ, ๊ตฌ์กฐ์ฒด ํ๊ธฐ ๋ฐฉ๋ฒ์ ๊ทธ๋๋ก ์ฌ์ฉํด ๋นํธ ํ๋์ ์ ๊ทผํจ
torgle_register tr = {14,true,false};
...
if(tr.goodIn)
...
๋นํธ ํ๋๋ ์ ์์ค ํ๋ก๊ทธ๋๋ฐ์์ ์ฃผ๋ก ์ฌ์ฉ๋จ