C์ธ์ด ํฌ์ธํฐ์ ์ดํด 1ํธ
ํฌ์ธํฐ๋ C์ธ์ด๋ฅผ ๋ฐฐ์ฐ๋ ์ฌ๋์๊ฒ๋ ์ข ์ข ์ด๋ ค์์ ์ฃผ๋ ์ฃผ์ ์ค ํ๋์ด๋ค. ๋ณต์กํด ๋ณด์ด์ง๋ง ํ ๋ฒ ์ดํดํ๋ฉด ๊ฐ๋ ฅํ ๋๊ตฌ๊ฐ ๋ ์ ์๋ค. ์ด ํฌ์คํ ์์๋ ํฌ์ธํฐ์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ฝ๊ฒ ํ์ด ์ค๋ช ํ๊ณ , ๋ช ๊ฐ์ง ํ๊ณผ ํจ๊ป ์ค์ ์ฝ๋ ์์๋ฅผ ํตํด ๊ทธ ์ฌ์ฉ๋ฒ์ ์์๋ณด๊ฒ ๋ค.
โญ1. ํฌ์ธํฐ๋ ๋ฌด์์ธ๊ฐ?
ํฌ์ธํฐ๋ ๊ฐ๋จํ ๋งํด, ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ ์ฅํ๋ ๋ณ์์ด๋ค. ์ฆ, ํฌ์ธํฐ๋ฅผ ํตํด ๋ค๋ฅธ ๋ณ์์ ์์น๋ฅผ ์๊ณ , ๊ทธ ์์น์ ์ ๊ทผํ์ฌ ๊ฐ์ ์ฝ๊ฑฐ๋ ๋ณ๊ฒฝํ ์ ์๋ค. C์ธ์ด์์ ํฌ์ธํฐ๋ ๋ฐ์ดํฐ์ ๋์ ๊ด๋ฆฌ์ ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๊ตฌํ์ ํ์์ ์ธ ์์์ด๋ค.
โญ2. ํฌ์ธํฐ์ ์ ์ธ
ํฌ์ธํฐ๋ฅผ ์ ์ธํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
ํ์
*ํฌ์ธํฐ๋ณ์๋ช
;
์๋ฅผ ๋ค์ด, intํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ฅผ ์ ์ธํ๊ณ ์ถ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
int *ptr;
์ด ์ฝ๋๋ ptr์ด๋ผ๋ ์ด๋ฆ์ ํฌ์ธํฐ ๋ณ์๋ฅผ ์ ์ธํ ๊ฒ์ผ๋ก, intํ ๋ณ์์ ์ฃผ์๋ฅผ ์ ์ฅํ ์ ์์์ ์๋ฏธํ๋ค.
ํ์ง๋ง ์ด์ ๊ฐ์ด ๋ณ์์ *์ ๋ถ์ด๋ ๊ฒ์ ํฌ์ธํฐ์ ์ดํด์ ํผ๋์ ๊ฐ์ค์ํจ๋ค.
์ค์ ๋ก, ํฌ์ธํฐ๋ ๋ณ์์ด๋ฉฐ, *๋ ๊ทธ ๋ณ์๊ฐ ํฌ์ธํฐ์์ ๋ํ๋ด๋ ํ์์ด๋ค. ์ฃผ์๋ฅผ ์ ์ฅํ๋ ๋ณ์์ด๋ฏ๋ก ์๋์ ๊ฐ์ด ์ฌ์ฉํ๋ ๊ฒ์ ์ถ์ฒํ๋ค.
int* ptr;
โญ3. ํฌ์ธํฐ์ ๊ธฐ๋ณธ ์ฌ์ฉ
ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ ๋จผ์ ํฌ์ธํฐ์ ์ฃผ์๋ฅผ ํ ๋นํด์ผ ํ๋ค. ์ด๋ & ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด ๋ณ์์ ์ฃผ์๋ฅผ ์ป์ด, ํฌ์ธํฐ์ ํ ๋นํ๋ ๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
int var = 10;
int* ptr = &var;
์ด์ ptr์ var์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋๋ค. var์ ๊ฐ์ ํฌ์ธํฐ๋ฅผ ํตํด ์ ๊ทผํ๋ ค๋ฉด, ์ญ์ฐธ์กฐ ์ฐ์ฐ์ *๋ฅผ ์ฌ์ฉํ๋ค.
printf("%d", *ptr); // 10 ์ถ๋ ฅ
์๋ ์ฌ์ง๊ณผ ๊ฐ์ด ์ดํดํ๋ฉด ํธํ ๊ฒ ๊ฐ๋ค.
์ฌ์ฉ์๊ฐ ์ด๋๋ฅผ ๊ฐ๋ฆฌํฌ์ง ๊ฒฐ์ ํ๋ ํ์ = ํฌ์ธํฐ๋ฅผ ์ ์ธ(์ฐธ์กฐ)
์ฌ์ฉ์๊ฐ ๊ฐ๋ฆฌํค๋ ๊ณณ์ ์ค์ ๋ ์ด์ ๋ฅผ ์ด์ ๊ฐ๋ฆฌํค๋ ํ์ = ํด๋น ์ฃผ์์ ์ ์ฅ๋ ๋ณ์์ ๊ฐ์ ๊ฐ์ ธ์ค๋ ๊ฒ(์ญ์ฐธ์กฐ)
'๐ท C์ธ์ด 30๊ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C/C++ Tip] 13. MCU ์ ์ด๋ฅผ ์ํ ๋นํธ ์ฐ์ฐ (0) | 2024.10.29 |
---|---|
[C/C++ Tip] 12. ํฌ์ธํฐ๊ฐ ํท๊ฐ๋ฆด ์ ๋ฐ์ ์๋ ์ด์ : ๋ณ(*)์ ์ข ๋ฅ์ ์ ์ฒด (1) | 2024.09.21 |
[C/C++ Tip] 10. Call by Value vs Call by Reference (0) | 2024.09.14 |
[C/C++ Tip] 9. memset, memcpy (0) | 2024.09.08 |
[C/C++ Tip] 8. ๋ฐฐ์ด๊ณผ ํฌ์ธํฐ (0) | 2024.09.07 |