2019. 5. 15. 05:45ใPROGRAMMING/C & C++
์ฌ๋๋ค์ด C์ธ์ด๋ฅผ ์ฒ์ ๋ฐฐ์ธ ๋ ๊ฐ์ฅ ํ๋ค์ดํ๋ ๋ถ๋ถ์ด ํฌ์ธํฐ์ ๋๋ค.
ํฌ์ธํฐ ์์ฒด๊ฐ ์ด๋ ค์ด ๊ฐ๋ ์ ์๋์ง๋ง,
ํฌ์ธํฐ์ ๋ฐฐ์ด, ํจ์ ๋ฑ์ ๊ด๊ณ๋ฅผ ํ์ ํ๋๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด๋ฒ ํฌ์คํ ์ ํฌ์ธํฐ๊ฐ ๋ฌด์์ธ์ง,
์ ํฌ์ธํฐ๊ฐ ์ค์ํ๊ณ ์ฌ์ฉํ๋์ง์ ๋ํด์ ๋ค๋ฃจ์ด๋ณด๊ฒ ์ต๋๋ค.
1. ํฌ์ธํฐ๋ ๋ฌด์์ธ๊ฐ?
ํฌ์ธํฐ๋ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๋ฐ์ดํฐ์ ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ณ์์ ๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ ์ธํ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ ์ฃผ์ ๊ฐ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๋ณ์ ์์ &(์ด๋๋ ์ค)๋ฅผ ๋ถ์ฌ์ฃผ๋ฉด ์ฃผ์ ๊ฐ์ ํ์ธํ ์ ์์ต๋๋ค.
์ด ์ฃผ์ ๊ฐ์ ๊ณ ์ ๋ ๊ฐ์ด ์๋๋ผ, ์ปดํ์ผ์ ํ ๋๋ง๋ค ๋ค๋ฅธ ๊ฐ์ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค.
์ฆ, ํ๋ก๊ทธ๋จ์์ ๋ณ์๋ฅผ ๋ง๋ค๋ฉด ์ด๋ค ๋ณ์๋ ์ปดํ์ผ๋ฌ์ ์ํ์ฌ
๋น์ด์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์์น๋ฅผ ์ฐจ์งํ๊ฒ ๋ฉ๋๋ค.
ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ์๋ ์์น ์๋ณํ ๊ฐ๋ฅํ ์ฃผ์๊ฐ ๋ถ์ฌ๋๋๋ฐ,
์ฃผ์๋ ์ด์์ฒด์ ๊ฐ 1๋ฐ์ดํธ ๋จ์๋ง๋ค ๋ถ์ฌํฉ๋๋ค.
์ด ์ฃผ์ ๊ฐ์ ๋ด์ ์ ์๋ ๋ณ์๊ฐ ๋ฐ๋ก ํฌ์ธํฐ ๋ณ์์ ๋๋ค.
2. ํฌ์ธํฐ ๋ณ์ ์ ์ธ
๊ทธ๋ ๋ค๋ฉด ํฌ์ธํฐ ๋ณ์๋ ์ด๋ป๊ฒ ์ ์ธํ๋๊ฐ?
์๋ฃํ ์์ * (์ ์คํฌ๋ฆฌํฐ)๊ธฐํธ๋ฅผ ๋ถ์ด๋ฉด ๋ฉ๋๋ค.
ํฌ์ธํฐ ๋ณ์ ์ ์ธ์ ์๋ฃํ ํ์ ์ ๋ง๊ฒ ์ ์ธํด์ผ ๋ฉ๋๋ค.
int* iNum1
int *iNum1
์๋ฃํ ์์ ๋ถ์ด๋ , ๋ณ์๋ช ์์ ๋ถ์ด๋ ์๊ด์ ์์ง๋ง
ํด์์ ํ ๋ 'intํ ํฌ์ธํฐ ๋ณ์'๋ผ๋ ์๋ฏธ๋ฅผ ๋ ์ด๋ฆด ์ ์๊ฒ
์๋ฃํ ์์ ๋ถ์ด๋ ๊ฒ์ ์ ํธํ๋ ํธ์ ๋๋ค.
์์์ & ๊ธฐํธ๋ ์ฃผ์ ๊ฐ์ ๋ํ๋ด๋ ๊ธฐํธ๋ผ๊ณ ํ์ต๋๋ค.
int* pPtr = &iNum1์ ํด์ํด๋ณด๋ฉด
'intํ ํฌ์ธํฐ ๋ณ์ pPtr์ iNum1์ ์ฃผ์๋ฅผ ๋์ ํ๊ฒ ๋ค'.
ํ๋ฒ pPtr์ด ์ด๋ค ๊ฐ์ ๊ฐ์ง๊ณ ์๋์ง ํ์ธํด๋ณด๊ฒ ์ต๋๋ค.
ํ์ธ ๊ฒฐ๊ณผ ๋๊ฐ์ ์ฃผ์ ๊ฐ์ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์ด๋ฒ์๋ ๋ฉ๋ชจ๋ฆฌ ์์์ ์ด๋ค ๊ตฌ์กฐ๋ฅผ ๋๊ณ ์๋์ง ๊ทธ๋ฆผ์ผ๋ก ์์๋ณด๊ฒ ์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ iNum1์ด๋ผ๊ณ ์ ์ธํ ๋ณ์๋
RAM ๋ฉ๋ชจ๋ฆฌ ์์
0135FBAC๋ผ๋ ์ฃผ์์ ์์นํ๊ณ ์๊ณ ,
์ฌ๊ธฐ์๋ 10์ด๋ผ๋ ๊ฐ์ ์ ์ฅํ๊ณ ์์ต๋๋ค.
๊ทธ๋ค์ iNum1์ ์ฃผ์ ๊ฐ์ ์ ์ฅํ๊ณ ์๋
pPtr์ ์ฃผ์ ๊ฐ์ ์ถ๋ ฅํ์ฌ ํ์ธํ์ง ์์์ง๋ง,
iNum1๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก pPtr๋ ํฌ์ธํฐ '๋ณ์'์ด๋ฏ๋ก ์ด์์ฒด์ ๊ฐ ๋ถ์ฌํ ์ฃผ์ ๊ฐ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์ด ์ฃผ์ ๊ฐ ์์น์๋ iNum1์ ์ฃผ์ ๊ฐ์ธ 0135FBAC๋ผ๋ ๊ฐ์ ์ ์ฅํ๊ณ ์์ต๋๋ค.
3. ๊ฐ์ ์ฐธ์กฐ
์ด์ pPtr์ด iNum1์ ์ฃผ์ ๊ฐ์ ๊ฐ์ง๊ณ ์๋ค๋ ๊ฑด ์์์ผ๋,
์ด๊ฒ์ ์ด๋ป๊ฒ ์จ๋จน์ด์ผ ๋๋์ง ์์๋ณด๊ฒ ์ต๋๋ค.
์ฐ๋ฆฌ๋ ํฌ์ธํฐ ๋ณ์ pPtr์ ํตํด iNum1์ ์ฃผ์๋ฅผ ์๊ณ ์์ต๋๋ค.
์ด ๋ง์, pPtr์ ํตํด์ iNum1์ ์ํฅ์ ๋ผ์น ์ ์๋ค๋ ๋ง์ ๋๋ค.
์ด๋ ๊ฒ ํฌ์ธํฐ ๋ณ์๋ฅผ ํตํด์ ๋ณ์์ ์ ๊ทผํ๋ ๊ฒ์ '๊ฐ์ ์ฐธ์กฐ'๋ผ๊ณ ํฉ๋๋ค.
pPtr์ ํตํด์ iNum1์ ์ ์ฅ๋ ๊ฐ์ ๋ณ๊ฒฝํ ์ ๋ ์์ต๋๋ค.
์ฌ๊ธฐ์ ์ฒ์ ํฌ์ธํฐ ๋ณ์๋ฅผ ์ ํ ๋ ํท๊ฐ๋ฆฌ๋ ๊ฒ์ด
&(์ด๋๋ ์ค)์ *(์ ์คํฌ๋ฆฌํฐ) ์ ๋๋ค.
&๋ ๋ง ๊ทธ๋๋ก '์ฃผ์'๋ฅผ ๋ํ๋ด๋ ๊ฒ์ด๊ณ ,
*๋ '๊ฐ'์ ๋ํ๋ด๋ ๊ฒ์ ๋๋ค.
์ฒ์ ํฌ์ธํฐ ๋ณ์๋ฅผ ์ด๊ธฐํํ ๋๋ฅผ ๋ค์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
int* pPtr = &iNum1
'pPtr์ iNum1์ ์ฃผ์๋ฅผ ์ ์ฅํ๊ฒ ๋ค'
์ด์ pPtr์๋ iNum1์ ์ฃผ์ ๊ฐ์ด ๋ด๊ฒจ์์ต๋๋ค.
์ด๋ฒ์๋ ๊ฐ์ ์ฐธ์กฐํ ๋๋ฅผ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
*pPtr = 20
'pPtr์ ๋ด๊ฒจ์๋ ์ฃผ์ ๊ฐ์ ์์นํ ๋ณ์๋ฅผ ๊ฐ์ ์ฐธ์กฐํ์ฌ, 20์ ๊ฐ์ ๋์ ํ๊ฒ ๋ค'
์ด๋ฒ์๋ ์ถ๋ ฅํ ๋์ ์ํฉ์ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
cout << pPtr << endl;
'pPtr์ด ์ ์ฅํ๊ณ ์๋ ์ฃผ์ ๊ฐ์ ์ถ๋ ฅํ๊ฒ ๋ค'
cout << *pPtr << endl;
'pPtr์ด ์ ์ฅํ๊ณ ์๋ ์ฃผ์ ๊ฐ์ ๋ด๊ฒจ ์๋ ๊ฐ์ ์ถ๋ ฅํ๊ฒ ๋ค'
4. ๊ทธ๋์ ํฌ์ธํฐ๊ฐ ์ ์ค์ํ ๊ฒ์ธ๊ฐ?
์์์ ์ฐ๋ฆฌ๋ ํฌ์ธํฐ ๋ณ์๋ฅผ ํตํด์ ์๋ณธ ๋ณ์์ ๊ฐ์ ์ ๊ทผํ ์ ์๋ค๋ ๊ฒ์ ์์์ต๋๋ค.
์ด๊ฒ์ด ํฌ์ธํฐ์ ํต์ฌ์ด์, ์ค์ํ ์ด์ ์ ๋๋ค.
๊ฐ๋จํ Swap ํจ์๋ฅผ ํตํด์ ์ค๋ช ์ ๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ฐ์ , ํจ์ ์ฌ์ฉ ์์ด Swap์ ํด๋ณด๊ฒ ์ต๋๋ค.
iNum1์ ๊ฐ๊ณผ iNum2์ ๊ฐ์ด ์ ๋ฐ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
๊ทธ๋ผ ์ด๋ฒ์๋ ํจ์๋ฅผ ํตํด์ Swap์ ์งํํด ๋ณผ๊น์?
๋ถ๋ช ๊ฐ์ ์ฝ๋์์๋ ๊ฐ์ด ๋ฐ๋์ง ์์ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์ ๊ทธ๋ฐ ๊ฒ์ธ์ง ๊ทธ๋ฆผ์ผ๋ก ์ค๋ช ํด๋๋ฆฌ๊ฒ ์ต๋๋ค.
ํจ์์ ๋งค๊ฐ๋ณ์๋ก ์ธ์๊ฐ ์ ๋ฌ๋ ๋๋
์๋ณธ์ ๊ฐ์ด ์๋ ๋ณต์ฌ๋ ๊ฐ์ด ์์ฑ๋ฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ ๋ณดํต ํจ์์ ๋งค๊ฐ๋ณ์๋ฅผ ์ค์ ํ ๋
๋ณ์์ ์ด๋ฆ์ ๋์ผํ๊ฒ ๋ง๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์
์๋ณธ ๊ฐ์ด๋ผ๊ณ ์ฐฉ๊ฐํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ, ์์ฐํ ๋ค๋ฅธ ๋ณ์๊ฐ ์์ฑ๋๊ฒ ๋ฉ๋๋ค.
ํ ๋ฒ ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ก ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค.
Swapํจ์ ๋ด์์๋ ๋ถ๋ช ํ ๊ฐ์ด ๋ฐ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์ฆ, ์ฐ๋ฆฌ๊ฐ ์ํ๋ ์๋ณธ ๊ฐ์ด ๋ฐ๋ ๊ฒ์ด ์๋๋ผ ๋ณต์ฌ๋ ๋ณ์์ ๊ฐ์ด ๋ฐ๋๊ฒ ๋ ๊ฒ์ ๋๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ด ๋ฐ๋ก ํฌ์ธํฐ์ ๋๋ค.
์ด๋ฒ์๋ ํฌ์ธํฐ ์ฌ์ฉ์ ํตํด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด๋ณด๊ฒ ์ต๋๋ค.
์๋ง๊ฒ ๊ฐ์ด ๋ฐ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
ํจ์์ ์ค๋ช ์ ๊ฐ๋ตํ๊ฒ ํ์๋ฉด,
๋งค๊ฐ๋ณ์๋ก๋ ์๋ณธ ์ฃผ์ ๊ฐ์ ๋ด๊ธฐ ์ํด์ intํ ํฌ์ธํฐ ๋ณ์๋ฅผ ์ ์ธํ์ต๋๋ค.
์ฃผ์ ๊ฐ์ ๋ด๊ฒจ์๋ ๋ฐ์ดํฐ์ ๊ฐ์ '๊ฐ์ ์ฐธ์กฐ'๋ฅผ ์ํด *(์ ์คํฌ๋ฆฌํฐ)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
int* ๋ณ์๋ ์ฃผ์ ๊ฐ์ ๋ด๋ ๋ณ์์ด๋ฏ๋ก, ๋งค๊ฐ๋ณ์ ์ ๋ฌ ์ &๋ฅผ ํตํด ์ฃผ์ ๊ฐ์ ๋ฃ์ด์ค๋๋ค.
์ง๊ธ์ ํ๋์ mainํจ์ ์์์ ํ๋ก๊ทธ๋จ์ ์์ฑํ๊ณ ์์ด์
ํฌ์ธํฐ์ ํ์์ฑ์ ํฌ๊ฒ ๋ชป๋๋ผ๊ฒ ์ง๋ง,
๊ท๋ชจ๊ฐ ์ปค์ง๊ฒ ๋๋ฉด ํ์ผ์ ๋ถํ ํ๊ณ , ์ฌ๋ฌ ๊ฐ์ cpp๋ cํ์ผ์ ๋ค๋ฃจ๊ฒ ๋ ๊ฒ์ ๋๋ค.
๋ถํ ๋ ํ์ผ๋ค ์์์ Player์ Monster ํน์ Player์ Item ๋ฑ๋ฑ
๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด์๋ ํฌ์ธํฐ๋ ์ ํ์ด ์๋ ํ์์ ์ด๊ฒ ๋ฉ๋๋ค.
'PROGRAMMING > C & C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
8. [C / C++] ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ์ ๋์ ํ ๋น (1) (0) | 2019.05.21 |
---|---|
7. [C์ธ์ด] ๊ตฌ์กฐ์ฒด์ ๋ฉ๋ชจ๋ฆฌ ๋จํธํ (1) | 2019.05.16 |
5. [C์ธ์ด] ํจ์ ์ดํดํ๊ธฐ (0) | 2019.05.14 |
4. [C์ธ์ด] ๋นํธ ์ฐ์ฐ์ (0) | 2019.05.10 |
3. [C์ธ์ด] ์์ ์ ์ ํํ. (2์ ๋ณด์) (3) | 2019.05.09 |