C์ธ์ด๋ฅผ ๊ณต๋ถํ๋ค ๋ณด๋ฉด ๊ตฌ์กฐ์ฒด(struct)๋ผ๋ ๊ฐ๋ ์ ๋ง๋๊ฒ ๋ฉ๋๋ค. ๊ตฌ์กฐ์ฒด๋ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํ ์ค์ํ ๋๊ตฌ ์ธ๋ฐ์, ๊ทธ๋ ๋ค๋ฉด ๊ตฌ์กฐ์ฒด๋ ๋ฌด์์ด๊ณ , ์ ์ฌ์ฉํ ๊น์? ๋ํ, ๊ตฌ์กฐ์ฒด์ ๋ฐฐ์ด์ ์ฐจ์ด์ ์ ๋ฌด์์ผ๊น์?
์ด ๊ธ์์๋ ๊ตฌ์กฐ์ฒด์ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋ ๊ณผ ์ฌ์ฉ ๋ฐฉ๋ฒ, ๋ฐฐ์ด๊ณผ ๊ตฌ์กฐ์ฒด์ ์ฐจ์ด๋ฅผ ๋น๊ตํ๋ฉฐ ์ธ์ ๊ตฌ์กฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ํฉํ์ง ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
- 1. ๊ตฌ์กฐ์ฒด๋ ๋ฌด์์ธ๊ฐ?
- 2. ๊ตฌ์กฐ์ฒด๋ ์ ์๊ฒผ์๊น?
- ๋ฐฐ์ด๊ณผ ๊ตฌ์กฐ์ฒด์ ์ฐจ์ด ๐ซง
- 3. ๊ตฌ์กฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ์ด์
- ๐ฉ๐ปโ๐๊ตฌ์กฐ์ฒด ์์: ํ์ ์ ๋ณด ๊ด๋ฆฌ
- 4. ๊ตฌ์กฐ์ฒด ๋ฌธ๋ฒ๊ณผ ์ฌ์ฉ ๋ฐฉ๋ฒ
- 5. ๊ตฌ์กฐ์ฒด์ ๊ด๋ จ๋ ์ถ๊ฐ ๊ฐ๋
- 6. TypeScript์์ ๊ตฌ์กฐ์ฒด์ ๋น์ทํ ๊ฐ๋
1. ๊ตฌ์กฐ์ฒด๋ ๋ฌด์์ธ๊ฐ?
๊ตฌ์กฐ์ฒด๋ ์๋ก ๋ค๋ฅธ ์ข ๋ฅ์ ๋ณ์๋ค์ ํ๋๋ก ๋ฌถ์ด์ ์๋ก์ด ์๋ฃํ์ ์ ์ ํ๋ ๊ฒ์ ๋๋ค. ์ฝ๊ฒ ๋งํด, ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด ๊ด๋ฆฌํ๊ธฐ ์ํ ๋๊ตฌ์ ๋๋ค.

๐ ๊ตฌ์กฐ์ฒด์ ์ ์
- ํ๋ ์ด์์ ์๋ก ๋ค๋ฅธ ์๋ฃํ(์ ์ํ, ์ค์ํ, ๋ฌธ์ํ, ํฌ์ธํฐ ๋ฑ)์ ํฌํจํ ์ ์์ต๋๋ค.
- ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ ๊ฐ์ ์ฐ๊ด์ฑ์ ์ ์งํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
2. ๊ตฌ์กฐ์ฒด๋ ์ ์๊ฒผ์๊น?
๋ณ์๊ฐ ๋ง์์ง๋ฉด ๋ฐ์ดํฐ ๊ด๋ฆฌ๋ ์ ์ ์ด๋ ค์์ง๋๋ค.
- ์๋ฅผ ๋ค์ด, ํ์ 100๋ช ์ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ ค๋ฉด ์ด๋ฆ, ๋์ด, ํค ๋ฑ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ฐ ๋ฐ๋ก ๊ด๋ฆฌํด์ผ ํ๋๋ฐ, ์ด๋ ๋นํจ์จ์ ์ ๋๋ค.
- ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ตฌ์กฐ์ฒด๊ฐ ์๊ฒผ์ต๋๋ค. ๊ตฌ์กฐ์ฒด๋ ์ฐ๊ด๋ ๋ฐ์ดํฐ๋ฅผ ํ๋์ "ํจํค์ง"์ฒ๋ผ ๋ฌถ์ด ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ค๋๋ค.
๋ฐฐ์ด๊ณผ ๊ตฌ์กฐ์ฒด์ ์ฐจ์ด ๐ซง
๋ฐฐ์ด๊ณผ ๊ตฌ์กฐ์ฒด๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ์ ๊ด๋ฆฌํ๋ค๋ ๊ณตํต์ ์ด ์์ต๋๋ค. ๊ทธ๋ ์ง๋ง ์ฑ๊ฒฉ๊ณผ ์ฌ์ฉ ๋ชฉ์ ์ด ๋ค๋ฆ ๋๋ค.
- ๋ฐฐ์ด: ๊ฐ์ ์๋ฃํ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ๊ฐ ์ ์ฅํ ๋ ์ฌ์ฉํฉ๋๋ค.
- ๊ตฌ์กฐ์ฒด: ์๋ก ๋ค๋ฅธ ์๋ฃํ์ ๋ฐ์ดํฐ๋ฅผ ํ๋๋ก ๋ฌถ์ ๋ ์ฌ์ฉํฉ๋๋ค.
- ์) ํ์์ ์ด๋ฆ(๋ฌธ์์ด), ๋์ด(์ ์), ํค(์ค์)๋ฅผ ๋ฌถ์ด์ ๊ด๋ฆฌ
3. ๊ตฌ์กฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ์ด์
๊ตฌ์กฐ์ฒด๋ ๋ฐ์ดํฐ์ ์ฐ๊ด์ฑ์ ์ ์งํ๋ฉด์ ๊ด๋ฆฌ ํจ์จ์ฑ์ ๋์ฌ์ค๋๋ค.
๊ตฌ์กฐ์ฒด ์ฌ์ฉ์ ์ฅ์
- ์ฐ๊ด๋ ๋ฐ์ดํฐ๋ฅผ ํ๋๋ก ๋ฌถ์ด์ ๊ด๋ฆฌ ๊ฐ๋ฅ
- ๋ฐ์ดํฐ๊ฐ ๋ง์์ง์๋ก ๊ด๋ฆฌ๊ฐ ์ฉ์ด
- ์ฝ๋๋ฅผ ๋ ๊ฐ๊ฒฐํ๊ณ ์ฝ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด์ค
๐ฉ๐ปโ๐๊ตฌ์กฐ์ฒด ์์: ํ์ ์ ๋ณด ๊ด๋ฆฌ
๊ตฌ์กฐ์ฒด๋ ์ฐ๊ด๋ ๋ฐ์ดํฐ๋ฅผ ํ๋๋ก ๋ฌถ์ด ๊ทธ๋ฃนํํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค. ๊ตฌ์กฐ์ฒด์ ๋ณธ์ง์ ์๋ฃํ์ ๋๋ค. ์ฆ, ์ฌ์ฉ์๊ฐ ์ง์ ์ ์ํ ์๋ก์ด ํ์ ์ ์๋ฃํ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค.
C์ธ์ด์์ ๊ตฌ์กฐ์ฒด์ ๊ฐ์ฒด์งํฅ ์ธ์ด์ ํด๋์ค๋ ๋ชจ๋ ์๋ฃํ ํ์ ์ ํด๋นํ๋ฉฐ, ๊ตฌ์กฐ์ฒด๋ ์ปค์คํ ํ์ ์ผ๋ก ํ์ค ํ์ ๊ณผ ์ญํ ์ ๋์ผํ์ง๋ง, ์ฌ์ฉ์๊ฐ ์ ์ํ ๋ง์ถคํ ์๋ฃํ์ด๋ผ๋ ์ ์์ ์ฐจ์ด๊ฐ ์์ ๋ฟ์ ๋๋ค.
struct student {
char name[10]; // ์ด๋ฆ
int age; // ๋์ด
int height; // ํค
}
์ ์๋ ๊ตฌ์กฐ์ฒด๋ ์ผ๋ฐ์ ์ธ ์๋ฃํ์ฒ๋ผ ์ฌ์ฉํ ์ ์์ต๋๋ค. name, age, height ๋ผ๋ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ๋ฌถ์ด ๊ด๋ฆฌํ ์ ์๋ ์๋ก์ด ์๋ฃํ student๋ฅผ ์ ์ํ ๊ฒ์ ๋๋ค.
์ด์ student๋ผ๋ ์๋ฃํ์ ์ด์ฉํด ๋ณ์๋ฅผ ์ ์ธํ๋ฉด, ๊ฐ ํ์์ ๋ฐ์ดํฐ๋ฅผ ํ๋์ "ํจํค์ง"๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
struct student st1, st2; // ํ์์ ๋ณด๋ฅผ ์ ์ฅํ ๋ ๊ฐ์ ๊ตฌ์กฐ์ฒด ๋ณ์ ์ ์ธ

์ ๊ทธ๋ฆผ์์ st1๊ณผ st2๋ ๊ฐ๊ฐ name, age, height๋ฅผ ํฌํจํ 18๋ฐ์ดํธ ํฌ๊ธฐ์ ๊ตฌ์กฐ์ฒด ๋ณ์์ ๋๋ค.
๐ฐ ๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ์ ํฌ๊ธฐ(struct student)
- char name[10]: char๋ 1๋ฐ์ดํธ ์๋ฃํ์ด๊ณ ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ 10์ด๋ฏ๋ก 10๋ฐ์ดํธ
- int age: int๋ 4๋ฐ์ดํธ
- int height: int๋ 4๋ฐ์ดํธ
4. ๊ตฌ์กฐ์ฒด ๋ฌธ๋ฒ๊ณผ ์ฌ์ฉ ๋ฐฉ๋ฒ
1๏ธโฃ ๊ตฌ์กฐ์ฒด์ ์ ์
struct ๊ตฌ์กฐ์ฒด์ด๋ฆ{
์๋ฃํ ๋ฉค๋ฒ1;
์๋ฃํ ๋ฉค๋ฒ2;
...
};
- struct ํค์๋: ๊ตฌ์กฐ์ฒด ์๋ฃํ์์ ๋ํ๋
- ๊ตฌ์กฐ์ฒด ์ด๋ฆ: ์ฌ์ฉ์๊ฐ ์ ์ํ ์๋ก์ด ์๋ฃํ ์ด๋ฆ
- ๋ฉค๋ฒ: ๊ตฌ์กฐ์ฒด์ ํฌํจ๋ ๋ณ์๋ค
2๏ธโฃ ๊ตฌ์กฐ์ฒด ๋ณ์ ์ ์ธ
struct ๊ตฌ์กฐ์ฒด์ด๋ฆ ๋ณ์๋ช
;
3๏ธโฃ ๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ์ ์ ๊ทผํ๊ธฐ
๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ๋ ์ง์ ์ ๊ทผ ์ฐ์ฐ์ .๋ฅผ ํตํด ์ ๊ทผํฉ๋๋ค.
๋ณ์๋ช
.๋ฉค๋ฒ์ด๋ฆ
์)
st1.name = "hyonie"; // st1์ name์ ๊ฐ ํ ๋น
st1.age = 20; // st1์ age์ ๊ฐ ํ ๋น
st1.heigth = 170; // st1์ height์ ๊ฐ ํ ๋น
4๏ธโฃ ํฌ์ธํฐ๋ฅผ ํตํ ๊ฐ์ ์ ๊ทผ
ํฌ์ธํฐ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ ์ ๊ทผ ์ฐ์ฐ์ -> ๋ฅผ ํตํด ๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ์ ์ ๊ทผํ ์ ์์ต๋๋ค.
struct student *ptr = &st1; // st1์ ์ฃผ์๋ฅผ ํฌ์ธํฐ์ ์ ์ฅ
ptr -> age = 21; // ํฌ์ธํฐ๋ก st1์ age๋ฅผ ์์
5. ๊ตฌ์กฐ์ฒด์ ๊ด๋ จ๋ ์ถ๊ฐ ๊ฐ๋
- ๊ณต์ฉ์ฒด(union): ๊ตฌ์กฐ์ฒด์ ๋น์ทํ์ง๋ง, ๋ชจ๋ ๋ฉค๋ฒ๊ฐ ๋์ผํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ณต์
- ์ด๊ฑฐํ(enum): ์ฐ๊ด๋ ์์๋ค์ ํ๋์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด ์ ์
- ํด๋์ค: ๊ตฌ์กฐ์ฒด์ ํ์ฅํ์ผ๋ก ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP)์ ์ฌ์ฉ
6. TypeScript์์ ๊ตฌ์กฐ์ฒด์ ๋น์ทํ ๊ฐ๋
TypeScript์์๋ ์ธํฐํ์ด์ค(interface)๋ ํ์ (Type)์ ์ฌ์ฉํด ๋น์ทํ ๊ฐ๋ ์ ๊ตฌํํ ์ ์์ต๋๋ค.
type Student = {
name: string;
age: number;
heghit: number;
};
const student1: Student = {
name: "hyonie",
age:20,
height: 170
}
์ฆ, ๊ตฌ์กฐ์ฒด๋ ์๋ก ๋ค๋ฅธ ์๋ฃํ์ ๋ฐ์ดํฐ๋ฅผ ํ๋๋ก ๋ฌถ์ด ์๋ก์ด ์๋ฃํ์ ์ ์ํ๋ ๋๊ตฌ์ ๋๋ค. ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ์ ์ฐ๊ด์ฑ์ ์ ์งํ๋ฉด์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
'C์ธ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C์ธ์ด] ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น malloc๊ณผ ์ฌํ ๋น realloc (0) | 2025.02.23 |
---|---|
[C์ธ์ด] ๊ตฌ์กฐ์ฒด ์ด๋ป๊ฒ ์ ๊ทผํ ๊น? ์ (.) ๊ณผ ํ์ดํ -> (0) | 2025.01.30 |
[C์ธ์ด] ํจ์ ํฌ์ธํฐ ์ ์ธ๊ณผ ํ์ฉ (3) | 2025.01.12 |
[C์ธ์ด] void๋ ์๋ฃํ์ผ๊น? (1) | 2025.01.04 |
[C์ธ์ด] *ํฌ์ธํฐ์ **ํฌ์ธํฐ ์ด์คํฌ์ธํฐ ๊ฐ๋ (1) | 2025.01.02 |