๐ ํฌ์ธํฐ๋?
๋ณ์์ ์ฃผ์๊ฐ์ ๊ฐ๋ฆฌํค๋, ์ ์ฅํ๋ ๋ณ์
๐ฃ ํฌ์ธํฐ ๋ณ์ ์ ์ธํ๊ธฐ
int *[๋ณ์๋ช
];
char *[๋ณ์๋ช
];
intํ ๋ณ์์ ์ฃผ์๋ฅผ ๋ด๊ณ ์ถ๋ค๋ฉด int *์, charํ ๋ณ์์ ์ฃผ์๋ฅผ ๋ด๊ณ ์ถ๋ค๋ฉด char *์ ์ฌ์ฉํ๋ค. ๋ค๋ฅธ ์๋ฃํ๋ค๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค.
์ ์ธํ ๋์๋ ์๋์ ํ์ ๋ชจ๋ ๊ฐ๋ฅํ๋ค.
- int *p
- int* p
- int * p
๐ช ํฌ์ธํฐ ์ฐ์ฐ์
- ์ฃผ์ ์ฐ์ฐ์ ( & )
- ๋ณ์์ ์ด๋ฆ ์์ ์ฌ์ฉํ๋ฉฐ, ํด๋น ๋ณ์์ ์ฃผ์๊ฐ์ ๋ฐํํจ.
- ์ฐธ์กฐ ์ฐ์ฐ์ ( * )
- ํฌ์ธํฐ์ ์ด๋ฆ์ด๋ ์ฃผ์ ์์ ์ฌ์ฉํ๋ฉฐ, ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ์ฃผ์์ ์ ์ฅ๋ ๊ฐ์ ๋ฐํํจ.
โ ํฌ์ธํฐ ๋ณ์๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉํ๋ *์ ํฌ์ธํฐ ๋ณ์๋ฅผ ์ ์ธํ๊ธฐ ์ํ ๊ฒ์ผ๋ก ์ฐธ์กฐ ์ฐ์ฐ์์ *์ ๋ค๋ฅธ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
๐ ํฌ์ธํฐ ๋ณ์์ ํฌ๊ธฐ
ํฌ์ธํฐ ๋ณ์๋ ์ฃผ์๋ฅผ ๋ด๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ํฌ๊ธฐ๊ฐ ๋์ผํ๋ค.
- 32๋นํธ ์์คํ → 4byte
- 64๋นํธ ์์คํ → 8byte
๐ญ ํฌ์ธํฐ ๋ณ์์ ๊ฐ ๋ฃ์ด๋ณด๊ธฐ
#include <stdio.h>
int main()
{
int *p;
int num = 5;
p = #
printf("๋ณ์ num์ ์ฃผ์ : %p \\n", &num);
printf("ํฌ์ธํฐ p์ ๊ฐ : %p \\n", p);
printf("ํฌ์ธํฐ p๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ : %d \\n", *p);
printf("ํฌ์ธํฐ p์ ์ฃผ์ : %p", &p);
}
์ถ๋ ฅ ๊ฒฐ๊ณผ
ํฌ์ธํฐ ๋ณ์์ ์ฃผ์๋ฅผ ๋ฃ์ด์ค ๋์๋ ๋ฃ๊ณ ์ ํ๋ ๋ณ์์ ์ฃผ์๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
์ด๋, ํฌ์ธํฐ ๋ณ์์ ์์๋ ์ฐธ์กฐ ์ฐ์ฐ์๋ฅผ ๋ถ์ด์ง ์๊ณ , ๋ฃ๊ณ ์ ํ๋ ๋ณ์์ ์์๋ ์ฃผ์ ์ฐ์ฐ์๋ฅผ ๋ถ์ฌ์ค๋ค.
์ถ๋ ฅ ๊ฒฐ๊ณผ์์ ์ ์ ์๋ค์ํผ, ๋ณ์ num์ ์ฃผ์์ ํฌ์ธํฐ p์ ๊ฐ์ด ์ผ์นํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ณด๋ฉด ์์ ๊ฐ์ ๊ฒ์ด๋ค.
๋ณ์ num์ intํ ์ด๋ฏ๋ก 4byte๋ฅผ ์ฐจ์งํ๋ค. num์ 5๊ฐ ํ ๋น๋์ด ์์ผ๋ฏ๋ก 5๊ฐ ๋ค์ด๊ฐ ์๋ ์ํ์ด๋ค.
ํฌ์ธํฐ p์ ์ฃผ์๋ num์ ์ฃผ์์ ๊ด๋ จ ์๋ ๋ค๋ฅธ ๊ณณ์ ์์นํด ์๋ค.
๋์ ํฌ์ธํฐ p๊ฐ ํ ๋น๋ฐ์ ๊ณต๊ฐ์ num์ ์ฃผ์๊ฐ์ด ๋ค์ด์๋ค.
์์ ๊ฐ์ด ํฌ์ธํฐ p๊ฐ ๋ณ์ num์ ์ฃผ์๊ฐ์ ๊ฐ๊ณ ์๋ ๊ฒ์ด๋ค.
'Programming Language > C' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C์ธ์ด] ๋ฐฑ์ค 10818๋ฒ : ์ต์, ์ต๋ (0) | 2023.09.12 |
---|---|
[C์ธ์ด] Call By Value & Call By Reference (0) | 2023.06.16 |
๋ฐฑ์ค 2480๋ฒ : ์ฃผ์ฌ์ ์ธ๊ฐ (0) | 2022.06.23 |
C์ธ์ด ๋ฉํ ๋ง | 6์ฃผ์ฐจ [๊ณผ์ ] | ๋ฐฑ์ค 2675๋ฒ, 1157๋ฒ (0) | 2022.06.01 |
C์ธ์ด ๋ฉํ ๋ง | 5์ฃผ์ฐจ [๊ณผ์ ] (0) | 2022.05.16 |