์ถ์ฒhttps://youtu.be/GvUMF_UM8jU
๋ฐ์ดํฐ ํ์
(1) ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ : ์ ์ ํ์(char/uchar, signed byte/byte, short/ushort, int/uint), ๋ถ๋ ์์ํ์(float, double)
(2) ๋ณตํฉ ๋ฐ์ดํฐ ํ์ : ํด๋์ค, ๊ตฌ์กฐ์ฒด, ์ธํฐํ์ด์ค etc
๋ณ์ : ๋ฉ๋ชจ๋ฆฌ ์ชฝ์์ ๋ณด๋ฉด ๋ณ์๋ "๋ฐ์ดํฐ๋ฅผ ๋ด๋ ์ผ์ ํฌ๊ธฐ(๋ฐ์ดํฐ ํ์์ ๋ฐ๋ผ ๊ฒฐ์ ๋จ)์ ๊ณต๊ฐ"์ด๋ผ๋ ์๋ฏธ๋ฅผ ๊ฐ๋๋ค.
๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ(์ ํ๊ณผ ํฌ๊ธฐ๊ฐ ์ ํด์ ธ ์์ด์ผํจ), ์ฝ๋์์ ์ด๋ฆ(์๋ณ์)์ ๋ถ์ฌ ์ฌ์ฉ
๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์์๋ ๊ฐ ํ์๊ณผ ์ฐธ์กฐ ํ์์ด ์๊ณ , ๋ณตํฉ ๋ฐ์ดํฐ ํ์์๋ ๊ฐ ํ์๊ณผ ์ฐธ์กฐ ํ์์ด ์๋ค.
๋ณ์๋ฅผ ์ ์ธํ๋ค(์ปดํ์ผ๋ฌ์๊ฒ) : "์ด ๋ณ์์ ํ์ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์์ฝํด๋ฌ๋ผ."
์ ์ธ๋ ๋ณ์์๋ ๋์ ์ฐ์ฐ์๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ ์ ์๋ค.
์ ์ธ๊ณผ ๋ฐ์ดํฐ ํ ๋น์ ๋์์ ํ ์ ์๋ค.
์ด๊ธฐํ : ์ด๊ธฐํ๋, ๋ณ์์ ์ต์ด์ ๋ฐ์ดํฐ๋ฅผ ํ ๋นํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
๋ณ์๋ฅผ ์ ์ธํ ํ ์๋ฌด ๋ฐ์ดํฐ๋ ์ ๋ ฅํ์ง ์์ผ๋ฉด C๋ C++์์๋ ์ฐ๋ ๊ธฐ ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ๋ค.
C#์์๋ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๋๋ก ์ด๊ธฐํ๋์ง ์์ ๋ณ์๊ฐ ์์ผ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ์๋ฌ๋ฅผ ๋ฟ์ผ๋ฉด์ ์คํ ํ์ผ์ ๋ง๋ค์ด์ฃผ์ง ์๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ณดํต 0์ผ๋ก ์ด๊ธฐํํด์ค๋ค.
๋ฉ๋ชจ๋ฆฌ์์ญ(์คํ vs ํ)
์คํ(Stack) (๊ฐ ํ์๊ณผ ๊ด๋ จ์ด ์์) "๋ง์น ๊ฒ์ผ๋ฅธ ํ๋ก๊ทธ๋๋จธ์ ์ฑ ์ ์์ ์์ฌ ์๋ ์ฑ ๋๋ฏธ์ ๊ฐ์ ๊ตฌ์กฐ"
๋จผ์ ์์ ์ฑ ์ผ์๋ก ์๋์ ์๊ณ ๋์ค์ ์์ ์ฑ ์ผ์๋ก ์์ ์์ด, ์ ์ผ ์๋์ ์๋ ์ฑ ์ ๊บผ๋ด๋ ค๋ฉด ์์ ์์ฌ ์๋ ๋ชจ๋ ์ฑ ์ ๊ฑท์ด๋ด๋ฏ์ด, ์คํ์ด ๋์ํจ.
- ๋ฐ์ดํฐ๋ฅผ ์์ ์ฌ๋ฆฌ๋ ๊ตฌ์กฐ์ ๋ฉ๋ชจ๋ฆฌ
- ๋์ค์ ์์ธ ๋ฐ์ดํฐ๋ฅผ ๋จผ์ ์ ๊ฑฐ
- ์ฒ์์ ์์ธ ๋ฐ์ดํฐ๋ฅผ ๋์ค์ ์ ๊ฑฐ
- ์์ธ ์์์ ์ญ์์ผ๋ก ํ์์๋ ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ์ ๊ฑฐ(์๋ ๋ฉ๋ชจ๋ฆฌ)
ํ(Heap) (์ฐธ์กฐ ํ์๊ณผ ๊ด๋ จ์ด ์์) "์คํ์ฒ๋ผ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ค์ค๋ก ์ ๊ฑฐํ๋ ๋งค์ปค๋์ฆX,
๋์ ์ ์ฒญ์๋ถ(CLR์ ๊ฐ๋น์ง ์ปฌ๋ ํฐ)๋ฅผ ๊ณ ์ฉ" ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ ํ๋ก๊ทธ๋จ ๋ค์ ์จ์ด ๋์ํ๋ฉด์ ํ์ ๋์ด์ ์ฌ์ฉํ์ง ์๋ ๊ฐ์ฒด๊ฐ ์์ผ๋ฉด ๊ทธ ๊ฐ์ฒด๋ฅผ ์ฐ๋ ๊ธฐ๋ก ๊ฐ์ฃผํ๊ณ ์๊ฑฐํ๋ ๊ธฐ๋ฅ์ ํ๋ค.
- ์์ ๋กญ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ
- ๋ณ๋ช : ์์ ์ ์ฅ์(Free Store)
์คํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด ์๋๋ฐ ๊ตณ์ด ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ํ์ํ ํ ์์ญ์ ์ฌ์ฉํ๋ ์ด์ :
์คํ์ ์์ธ ๋ฐ์ดํฐ๋ค์ ์์ ์ด ํ์ด๋ฌ๋ ๊ณ ํฅ(์ฝ๋ ๋ธ๋ก)์ด ์ข ๊ฒฐ๋๋ ์์ ์ ํจ๊ป ์ ๊ฑฐ๋๋ค.(์คํ์ ํน์ฑ์ด์ ํ๊ณ)
์ฝ๋๋ธ๋ก ์ข ๊ฒฐ ์์ ๊ณผ ์๊ด์์ด ๋ฐ์ดํฐ๋ฅผ ์ ์งํ๊ณ ์ถ์ ๋,
์ธ์ ๊น์ง๋ผ๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ํ๋ค๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ด๋ฆด ์ ์๋ ๋ ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ CLR์ด ์ ๊ณตํ๋ ๊ฒ์ด๋ค.
ํ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ ค๋์ผ๋ฉด ์ฝ๋ ๋ธ๋ก ์ข ๊ฒฐ ์์ ๊ณผ ์๊ด์์ด ๋ฐ์ดํฐ๋ ์๋ช ์ ์ ์งํ๋ค.
์ด ๋ฐ์ดํฐ๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ ์ด์ ์ฌ์ฉํ์ง ์๋ ์ฐ๋ ๊ธฐ๊ฐ ๋์์ ๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ์๊ฑฐํด์ ๋ฒ๋ฆฐ๋ค.(๋ฉ๋ชจ๋ฆฌ์์ ์ฌ๋ผ์ง)
์ฐธ์กฐ ํ์์ ๋ณ์๋ ํ๊ณผ ์คํ์ ํจ๊ป ์ด์ฉํ๋๋ฐ, ํ ์์ญ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์คํ ์์ญ์๋ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ํ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๋ฅผ ์ ์ฅํ๋ค.
๋ฐ์ดํฐ๋ฅผ ์ง์ ์ ์ฅํ๋ ๋์ ์ค์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๋ฅผ "์ฐธ์กฐ"ํ๋ค๊ณ ํด์ "์ฐธ์กฐ ํ์"
๊ฐ ํ์์ ๋ณ์๊ฐ ๊ฐ์ ๋ด๋ ๋ฐ์ดํฐ ํ์์ ๋งํ๊ณ ,
์ฐธ์กฐ ํ์์ ๋ณ์๊ฐ ๊ฐ ๋์ ๊ฐ์ด ์๋ ๊ณณ์ ์์น(์ฐธ์กฐ)๋ฅผ ๋ด๋ ๋ฐ์ดํฐ ํ์์ ๋งํ๋ค.
๊ฐ ํ์(Value Type)
- ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ๋ด๋ ๋ฐ์ดํฐ ํ์
- ์คํ์ ํ ๋น(์ฆ, ์๋์ผ๋ก ์ ๊ฑฐ๋จ)
- ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์๊ณผ ๊ตฌ์กฐ์ฒด๊ฐ ์ฌ๊ธฐ์ ํด๋น
- ๊ฐ ํ์์ ๋ณ์๋ ๋ชจ๋ ์คํ์ ์ ์ฅ๋๋ค.
์ฝ๋ ๋ธ๋ก ์์์ ์์ฑ๋ ๋ชจ๋ ๊ฐ ํ์์ ๋ณ์๋ค์ ํ๋ก๊ทธ๋จ ์คํ์ด ์ค๊ดํธ๋ฅผ ๋ง๋๋ฉด ๋ฉ๋ชจ๋ฆฌ์์ ์ ๊ฑฐ๋๋ค.
{//์ฝ๋ ๋ธ๋ก ์์
int a = 100;
int b = 200;
int c = 300;
}//์ฝ๋ ๋ธ๋ก ๋
์ ์ฝ๋์ ์ ์ธ๋ ์ธ ๋ณ์ a,b,c๋ ์ฐจ๋ก๋๋ก ์คํ์ ์์๋ค๊ฐ ์ฝ๋ ๋ธ๋ก์ด ๋๋๋ฉด์ ์คํ์์ ๊ฑทํ ์ ๊ฑฐ๋๋ค.
์๋ ์บก์ณ๋ ์์ ์ฝ๋๊ฐ ํ ์ค์ฉ ์คํ๋ ๋๋ง๋ค ์คํ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๊ฐ ์ ์ฌ๋์๋ค๊ฐ ๊ฑทํ๋๊ฐ๋ ๊ณผ์ ์ ๋ณด์ฌ์ค๋ค.
a,b,c ์์๋๋ก ์ ์ธ์ด๊ธฐํ ํ๋ค๋ฉด
c,b,a ์์๋๋ก ๊ฑทํ๋๊ฐ๋ค.
์ฐธ์กฐํ์(Reference Type)
- ๋ฉ๋ชจ๋ฆฌ์ ๋ค๋ฅธ ๋ณ์์ ์ฃผ์๋ฅผ ๋ด๋ ๋ฐ์ดํฐํ์
- ํ์ ํ ๋น
(๊ฐ๋น์ง ์ฝ๋ ํฐ์ ์ํด ์ ๊ฑฐ๋จ : ํ์ ์ฐธ์กฐํ๋ ๋ณ์๊ฐ ์๋ฌด ๊ฒ๋ ์์ ๋ ํ์ ๋ด๊ธด(์ ์ฅ๋) ๋ฐ์ดํฐ๋ฅผ ์ฐ๋ ๊ธฐ ์ทจ๊ธ!)
- ๋ณตํฉ ๋ฐ์ดํฐ ํ์
(๊ธฐ๋ณธ+๋ณตํฉ: ๋ฉ์น๊ฐ ํฌ๋ฏ๋ก ํ์ ํ ๋นํด๋๊ณ ์คํ์์๋ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ํจ)๊ณผ ํด๋์ค ๋ฑ์ด ์ฌ๊ธฐ์ ํด๋น
ํ์ค ์์ฝ:
์คํ์ ๋ณ์์ ์๋ช ์ฃผ๊ธฐ(์ฝ๋ ๋ธ๋ญ)๊ฐ ๋ค ํ๋ฉด ์๋์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ๊ณ ,
ํ์ ๋ ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ฐธ์กฐํ๋ ๊ณณ์ด ์์ ๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์น์์ฃผ๋ ๊ตฌ์กฐ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ค.
'C# > ์ด๊ฒ์ด C#์ด๋ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
5. Parse์ ToString() ๋ฌธ์์ด์ ์ซ์๋ก, ์ซ์๋ฅผ ๋ฌธ์์ด๋ก (0) | 2022.02.07 |
---|---|
4. object ํ์, ๋ฐ์ฑ๊ณผ ์ธ๋ฐ์ฑ (0) | 2022.02.07 |
3. ๋ถํธ๊ฐ ์๋ ์ ์, ๋ถํธ๊ฐ ์๋ ์ ์, 2์ ๋ณด์๋ฒ (0) | 2022.02.06 |
3. object, ๋ฐ์ฑ๊ณผ ์ธ๋ฐ์ฑ, var (0) | 2022.02.04 |
1. ์ฝ์ C# ํ๋ก๊ทธ๋จ์ ์ดํด (using, using static, namespace, CLR) (0) | 2022.02.04 |