C์ธ์ด ํฌ์ธํฐ์ ์ดํด 2ํธ
C์ธ์ด๋ฅผ ๋ฐฐ์ฐ๋ฉด์ ๊ฐ์ฅ ๋ง์ด ํผ๋์ ๊ฒช๋ ์ฃผ์ ์ค ํ๋๊ฐ ๋ฐ๋ก ํฌ์ธํฐ์ด๋ค. ํนํ * ๊ธฐํธ์ ๋ค์ํ ์ญํ ์ด ์ด ํผ๋์ ์ฃผ๋ฒ์ด๋ค. ์ด ํฌ์คํ ์์๋ * ๊ธฐํธ๊ฐ ๊ฐ์ง๋ ์ธ ๊ฐ์ง ์ญํ ์ ์น์ ํ๊ฒ ์ค๋ช ํจ์ผ๋ก์จ ํฌ์ธํฐ์ ๋ํ ๋น์ ์ ์ดํด๋ฅผ ํ ๋จ๊ณ ์ ๊ทธ๋ ์ด๋์ํฌ ๊ฒ์ด๋ค.
โญ1. ํฌ์ธํฐ ๋ณ์ ์ ์ธ: *์ ์ฒซ ๋ฒ์งธ ์ ์ฒด
ํฌ์ธํฐ๋ฅผ ์ ์ธํ ๋ *๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋, ๋จ์ํ "์ด ๋ณ์๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ ์ฅํ๋ค"๋ ์ฌ์ค์ ๋ํ๋ด๊ธฐ ์ํจ์ด๋ค. int* ptr;๋ผ๊ณ ์ ์ธํ๋ฉด, "ptr์ ์ ์์ ์ฃผ์๋ฅผ ์ ์ฅํ๋ ๋ณ์"๋ผ๋ ์๋ฏธ๊ฐ ๋๋ค. ์ฌ๊ธฐ์ *๋ ํฌ์ธํฐ ๋ณ์์ ํ์ ๋ถ๋ถ์ ํฌํจ๋์ด, ์ด ๋ณ์๊ฐ "์ฃผ์"๋ฅผ ์ ์ฅํ๋ ํน๋ณํ ์ข ๋ฅ์ ๋ณ์์์ ์๋ ค์ฃผ๋ ์ญํ ์ ํ๋ค.
โญ2. ์ญ์ฐธ์กฐ ์ฐ์ฐ์: *์ ๋ ๋ฒ์งธ ์ ์ฒด
๋ณ์ ์์ *๊ฐ ์ฌ์ฉ๋๋ฉด, ๊ทธ๊ฒ์ "์ญ์ฐธ์กฐ ์ฐ์ฐ์"๊ฐ ๋ฉ๋๋ค. ์ญ์ฐธ์กฐ ์ฐ์ฐ์๋ ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ๋ฉ๋ชจ๋ฆฌ ์์น์ ์ ์ฅ๋ ๊ฐ์ ์ ๊ทผํ๊ฒ ํด์ค๋ค. ์๋ฅผ ๋ค์ด, *ptr = 10;์ ptr์ด ๊ฐ๋ฆฌํค๋ ๋ฉ๋ชจ๋ฆฌ ์์น์ 10์ ์ ์ฅํ๋ค. ๋ง์ฝ ptr์ด int var์ ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ฉด, ์ด ์ฐ์ฐ์ ์ฌ์ค์ var = 10;๊ณผ ๊ฐ์ ํจ๊ณผ๋ฅผ ๊ฐ์ง๋ค. ์ฌ๊ธฐ์ *๋ "ptr์ด ๊ฐ๋ฆฌํค๋ ์์น์..."๋ผ๋ ์๋ฏธ๋ก ๋ณ์ ํ๋ค.
โญ3. ๊ณฑ์ : *์ ์ธ ๋ฒ์งธ ์ ์ฒด
์ด์ ์ํ ์๊ฐ์ผ๋ก ๋์๊ฐ๋ค. C์ธ์ด์์ *๋ ๋ ์๋ฅผ ๊ณฑํ๋ ๊ณฑ์ ์ฐ์ฐ์๋ก๋ ์ฌ์ฉ๋๋ค. ์ด ๊ฒฝ์ฐ, *๋ ํฌ์ธํฐ์ ์ ํ ๊ด๋ จ์ด ์์ผ๋ฉฐ, ๋จ์ํ ๋ ๊ฐ์ ๊ณฑํ๋ ค๋ ์ฉ๋๋ก ์ฌ์ฉ๋๋ค. ์๋ฅผ ๋ค์ด, int result = 4 * 5;๋ result ๋ณ์์ 20์ ์ ์ฅํ๋ค. ์ด ๋ *๋ "๊ณฑํ๊ธฐ"์ ๊ธฐํธ๋ก ์ฌ์ฉ๋๋ฉฐ, ์ฐ๋ฆฌ๊ฐ ํ์์ ์ํ์์ ๋ณด๋ ๊ทธ ๊ณฑ์ ๊ณผ ๊ฐ๋ค.
โญ4. (*)์ ์ดํด
์ด ์ธ ๊ฐ์ง ์ญํ ์ ๋ช ํํ ์ดํดํ๋ ๊ฒ์ C์ธ์ด์์ ํฌ์ธํฐ๋ฅผ ๋ค๋ฃจ๋ ๋ฐ ์์ด ํ์์ ์ด๋ค. ํนํ, * ๊ธฐํธ์ ์ญํ ์ด ๋ฌธ๋งฅ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ฏ๋ก, ์ฝ๋๋ฅผ ์ฝ์ ๋๋ ์ฃผ๋ณ ์ฝ๋์ ํจ๊ป *์ ์ฌ์ฉ ๋ฐฉ์์ ์ ํํ ํ์ ํด์ผ ํ๋ค.
- ํฌ์ธํฐ ๋ณ์๋ฅผ ์ ์ธํ ๋๋ *๊ฐ ํ์ ์ ์ผ๋ถ๋ก์ "์ด ๋ณ์๋ ์ฃผ์๋ฅผ ์ ์ฅํ๋ ํฌ์ธํฐ"์์ ๋ํ๋ธ๋ค.
- ๋ณ์ ์์์ *๋ฅผ ์ฌ์ฉํ ๋๋, ๊ทธ๊ฒ์ด ์ญ์ฐธ์กฐ ์ฐ์ฐ์๋ก ์๋ํ์ฌ ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ์ฝ๊ฑฐ๋ ์ฐ๋ ์ญํ ์ ํ๋ค.
- ์ํ์ ์ฐ์ฐ์์๋, *๋ ๋จ์ํ ๊ณฑ์ ์ฐ์ฐ์์ด๋ค.
ํฌ์ธํฐ๋ฅผ ๋ค๋ฃจ๋ฉด์ ํท๊ฐ๋ฆฌ์ง ์๊ธฐ ์ํ ๊ฟํ์ ํ๋ ๊ณต์ ํ์๋ฉด, ํฌ์ธํฐ ์ ์ธ๊ณผ ์ญ์ฐธ์กฐ ์ *์ ์์น์ ์ฃผ์ํ๋ ๊ฒ์ด๋ค. ์ด๋ฅผ ๋ช ํํ ๊ตฌ๋ถํ๋ ๊ฒ์ ์ฝ๋๋ฅผ ๋ ์ฝ๊ธฐ ์ฝ๊ฒ ๋ง๋ค๊ณ , ์๋ํ์ง ์์ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๋ ๋ฐ ํฐ ๋์์ด ๋๋ค.
4.1. ํฌ์ธํฐ ์ ์ธ: ๋ณ์ํ ์์ * ๋ถ์ด๊ธฐโ
ํฌ์ธํฐ ๋ณ์๋ฅผ ์ ์ธํ ๋๋, ๋ณ์ ํ์ ์์ *๋ฅผ ๋ถ์ฌ ํด๋น ๋ณ์๊ฐ ํฌ์ธํฐ์์ ๋ํ๋ธ๋ค. ์ด ๋ฐฉ์์ ์ ์ธํ๋ ๋ณ์๊ฐ ์ผ๋ฐ ๋ณ์๊ฐ ์๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ ์ฅํ๋ ํฌ์ธํฐ์์ ๋ช ํํ ํ๋ค. ์๋ฅผ ๋ค์ด, intํ ๊ฐ์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ฅผ ์ ์ธํ๊ณ ์ถ๋ค๋ฉด, int* ptr;์ ๊ฐ์ด ์์ฑํ๋ค. ์ฌ๊ธฐ์ int*๋ "์ ์ํ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ"๋ผ๋ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ฉฐ, ptr์ ๊ทธ๋ฌํ ํฌ์ธํฐ ๋ณ์์ ์ด๋ฆ์ด๋ค.
4.2. ์ญ์ฐธ์กฐ: ๋ณ์๋ช ์์ * ๋ถ์ด๊ธฐ
ํฌ์ธํฐ๋ฅผ ํตํด ๊ฐ๋ฆฌํค๋ ๋ณ์์ ๊ฐ์ ์ ๊ทผํ๊ฑฐ๋ ์์ ํ ๋๋ ๋ณ์๋ช ์์ *๋ฅผ ๋ถ์ฌ ์ญ์ฐธ์กฐํ๋ค. ์ด๋ ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ๋ฉ๋ชจ๋ฆฌ ์์น์ ์ ์ฅ๋ ์ค์ ๊ฐ์ ์๋ฏธํ๋ค. ์๋ฅผ ๋ค์ด, *ptr = 5;๋ผ๊ณ ํ๋ฉด, ptr์ด ๊ฐ๋ฆฌํค๋ ๋ฉ๋ชจ๋ฆฌ ์์น์ 5๋ฅผ ์ ์ฅํ๋ ๊ฒ์ด๋ค. ์ญ์ฐธ์กฐ๋ฅผ ํตํด ํฌ์ธํฐ๋ก ๊ฐ๋ฆฌํค๋ ๋ณ์์ ๊ฐ์ ์ฝ๊ฑฐ๋ ๋ณ๊ฒฝํ ์ ์๋ค.
#include <stdio.h>
int main() {
// 1. ํฌ์ธํฐ ๋ณ์ ์ ์ธ: *๊ฐ ํฌ์ธํฐ ํ์
์ ๋ํ๋
int value = 10;
int* ptr = &value; // ptr์ value์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํด
// 2. ์ญ์ฐธ์กฐ ์ฐ์ฐ์: *๋ฅผ ์ฌ์ฉํด ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ์ ์ ๊ทผ ๋ฐ ์์
printf("Before: %d\n", *ptr); // ptr์ด ๊ฐ๋ฆฌํค๋ ๋ฉ๋ชจ๋ฆฌ(์ฆ, value)์ ๊ฐ์ ์ถ๋ ฅ
*ptr = 20; // ptr์ ํตํด value์ ๊ฐ์ ๋ณ๊ฒฝ
printf("After: %d\n", value); // ๋ณ๊ฒฝ๋ value์ ๊ฐ์ ์ถ๋ ฅ
// 3. ๊ณฑ์
์ฐ์ฐ์: *๋ฅผ ์ฌ์ฉํ ์ํ์ ๊ณฑ์
int a = 5;
int b = 4;
int result = a * b; // a์ b์ ๊ณฑ์
printf("Multiplication: %d\n", result);
return 0;
}
์ด๋ ๊ฒ ๋ค์ํ ์ญํ ์ ํ๋ *๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๊ณ ์ฌ์ฉํ๋ฉด, ํฌ์ธํฐ์ ๊ฐ๋ ๋ ํจ์ฌ ๋ช ํํด์ง ๊ฒ์ด๋ค. ์ด๊ธฐ ํผ๋์ ๊ทน๋ณตํ๊ณ *์ ์ด๋ฌํ ๋ค์ํ ์ฌ์ฉ๋ฒ์ ์ต์ํด์ง๋ฉด, ํฌ์ธํฐ๋ C์ธ์ด ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ๋ ฅํ ๋๊ตฌ๋ก์ ์ฌ๋ฌ๋ถ์ ์ฝ๋๋ฅผ ๋์ฑ ํจ์จ์ ์ด๊ณ ๊ฐ๋ ฅํ๊ฒ ๋ง๋ค์ด ์ค ๊ฒ์ด๋ค.
'๐ท C์ธ์ด 30๊ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C/C++ Tip] 14. ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น (0) | 2024.10.29 |
---|---|
[C/C++ Tip] 13. MCU ์ ์ด๋ฅผ ์ํ ๋นํธ ์ฐ์ฐ (0) | 2024.10.29 |
[C/C++ Tip] 11. C์ธ์ด ํฌ์ธํฐ ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ (1) | 2024.09.19 |
[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 |