
point : (์ด๋ ํ ๊ณต๊ฐ)์ง์ + er : ํ๋ โ ์ด๋ ํ ์ง์ ์ ๊ฐ๋ฆฌํจ๋ค.
์ฆ, ํฌ์ธํฐ๋ ์ด๋ ํ ์ง์ (์ฃผ์)์ ๊ฐ๋ฅดํค๋ ๊ฐ๋
์
๋๋ค.
์ด๋ ๋ณ์ํํ๋ก ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
์ผ๋ฐ์ ์ธ ๋ณ์์ ๊ฐ์ ๊ฐ๋
์ด์ง๋ง ์ฌ๊ธฐ์ ํฌ์ธํฐ๋ฅผ ์๋ฏธํ๋ * ๊ธฐํธ๋ฅผ ๋ํ๋ฉด ์ด๋ ํฌ์ธํฐ ๋ณ์๊ฐ ๋์ด ์กฐ๊ธ ๋ค๋ฅด๊ฒ ์ฌ์ฉ๋ฉ๋๋ค.
//[์๋ฃํ]* [ํฌ์ธํฐ ๋ณ์ ์ด๋ฆ];
int* p;
char* pointer;
double* a;
์ผ๋ฐ ๋ณ์ ์ ์ธ์ฒ๋ผ ํฌ์ธํฐ ๋ณ์ ์ด๋ฆ๋ ์์ ๋กญ๊ฒ ์ ํด๋ ๋ฉ๋๋ค.
ํ์ง๋ง ๋ณ์ ์ด๋ฆ์ ์ ํ๋๋ฐ๋ ์๋ฌต์ ์ธ ๋ฃฐ์ด ์์ง๋ง ์ฌ๊ธฐ์๋ ์ค์ํ์ง ์์ผ๋ฏ๋ก ๋ค๋ฃจ์ง ์๊ฒ ์ต๋๋ค.
ํฌ์ธํฐ ๋ณ์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ฐธ์กฐํ๋ ค๋ ๋ณ์๊ฐ ์ ์ธ ๊ทธ๋ฆฌ๊ณ ์ด๊ธฐํ๊ฐ ๋์ด์์ด์ผ ํฉ๋๋ค.
์ฆ, ์ฐธ์กฐ ๋นํ๋(?) ๋ณ์์๋ ๊ฐ์ด ์ ์ฅ๋์ด ์์ด์ผ ํฉ๋๋ค.
// ์ฐธ์กฐ ๋นํ๋ ๋ณ์
1) ์ ์ธ๊ณผ ์ด๊ธฐํ
int a = 10;
2) ์
๋ ฅ๋ฐ๊ธฐ
int a;
scanf("%d",&a);
// ํฌ์ธํฐ ๋ณ์
1) ์ ์ธ๊ณผ ์ด๊ธฐํ ๋ฐ๋ก
int* p;//์ ์ธ or ์ ์
p = &a;//์ด๊ธฐํ
2) ์ ์ธ๊ณผ ์ด๊ธฐํ ๋์
int* p = &a;
C์ธ์ด๋ Top-Down ๋ฐฉ์์ด๊ธฐ์ ์ฐธ์กฐํ ๋ณ์๊ฐ ๋จผ์ ์ ์ธ๋์ด์ผ ํฉ๋๋ค.
*Top-Down : ์์์๋ถํฐ ํ์ค์ฉ ์ปดํ์ผํด์ ์ปดํจํฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๋ ๋ฐฉ์
Quiz 1.
์ด ์ฝ๋๋ ์ ์์ ์ธ ํฌ์ธํฐ ๋ณ์๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๊ฐ?
int main(){
int* p; โขโขโข 1)
int a; โขโขโข 2)
p = &a; โขโขโข 3)
scanf("%d",&a); โขโขโข 4)
}
Quiz 2.
๊ทธ๋ผ ์์ ์ฝ๋๋ฅผ ๋ณด๊ณ ์ด๋์์ ์ถ๋ ฅ ํ์ ๋ ํฌ์ธํฐ ๋ณ์์ ๊ฐ์ด ์ด์ํด์ง๊น?
int* p;
int *p;
int * p;
3๊ฐ ๋ค ์ฌ์ฉ ๊ฐ๋ฅํ์ง๋ง 3๋ฒ์งธ ๋ฐฉ๋ฒ์ ์ถ์ฒํ์ง ์๋๋ค.
์์์ ๋งํ๊ธธ โํฌ์ธํฐ ๋ณ์๋ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฐ๋
โ์ด๋ผ๊ณ ํ์ต๋๋ค.
๊ทธ๋ผ ํฌ์ธํฐ ๋ณ์์๋ ์ฃผ์๋ฅผ ์ ์ฅํด์ผ ํ๋๋ฐ ์ด๋ป๊ฒ ์ ์ฅํ๋๊ฐ?
๋ฐ๋ก & ๊ธฐํธ๋ฅผ ์ฌ์ฉํด์ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๋ฅผ ์ ์ฅํ๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ํฌ์ธํฐ ๋ณ์์ ์๋ฃํ๊ณผ ์ฐธ์กฐ ๋นํ๋ ๋ณ์์ ์๋ฃํ์ด ๋๊ฐ์์ผ ํฉ๋๋ค.
๊ทธ ์ด์ ๋
#include <stdio.h>
int main(){
int *p;
int a = 10;//์ฃผ์ : 0x000000000 ~ 0x00000001f
int p = &a;
}

intํ์ด 4๋ฐ์ดํธ ๋ผ์ 0x000000000๋ถํฐ 0x00000001f๊น์ง์ 4btye ์ฃผ์๊ฐ์ ์ฐธ์กฐํ๊ฒ ๋๋ค.
์ด๋ฐ์์ผ๋ก ์๋ฃํ์ ๋ฐ๋ผ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๊ฐ์ ์ฐธ์กฐํ๊ฒ ๋๋ค.
์๋ฃํ์ด ๋ค๋ฅด๋ฉด ์ฐธ์กฐ๋๋ ์ฃผ์๊ฐ์ด ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ฏ๋ก ๊ฐ์ด ์ด์ํด ์ง ์ ์๋ค.
์์ ๊ทธ๋ฆผ๊ณผ ์ฝ๋๋ฅผ ๋ณด๋ฉด
[ํฌ์ธํฐ ๋ณ์์ ์ ์ฅ๋ ์ฃผ์๊ฐ์ผ๋ก ์ด๋(0x000000000)] โ [์ฃผ์๊ฐ์ ์ ์ฅ๋ ์๋ฃํ์ ํฌ๊ธฐ๋งํผ ๊ฐ์ ๋ณต์ฌ(0x000000000 ~ 0x00000001f์ ๊ฐ)]
์ฆ, ๋ด๋ถ์ ์ผ๋ก๋int *p = 10; ์ด๋ฐ์์ผ๋ก ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์์๋ 0,1๋ก ๋์ด ์์ง๋ง ์ถ๋ ฅํ ๋๋ 10์ง์(์ ์ํ)๋ก ๋ฐ๋๋ค.

ํฌ์ธํฐ ๋ณ์๋ฅผ ์ถ๋ ฅํ๋ ๋ฐฉ์์ ํฌ๊ฒ 3๊ฐ์ง๊ฐ ์์ต๋๋ค.
int a = 10;
int *p = &a;
printf("ํฌ์ธํฐ ๋ณ์๊ฐ ์ฐธ์กฐํ๋ ์ฃผ์ : %p",p); โขโขโข 1)
printf("a์ ์ฃผ์ : %p",a); โขโขโข 2)
printf("p๊ฐ ์ฐธ์กฐํ๋ ๊ฐ : %d",*p); โขโขโข 3)
/*
์ถ๋ ฅ
----------------------------------
ํฌ์ธํฐ ๋ณ์๊ฐ ์ฐธ์กฐํ๋ ์ฃผ์ : 0x16dc97388
a์ ์ฃผ์ : 0x16dc97388
p๊ฐ ์ฐธ์กฐํ๋ ๊ฐ : 10
----------------------------------
*/
*%p : ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ 16์ง์ ํํ๋ก ์ถ๋ ฅํ๊ฒ ํ๋ค.
๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๋ ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋๊ณ ๋ค์ ์คํํ๋ฉด ์ฃผ์๊ฐ์ด ๋ฐ๋๋๋ค.
C์ธ์ด๋ฅผ ํ๋ฉด์ ๋ง์ ์ฌ๋๋ค์ด ํฌ๊ธฐํ๋ ๋ถ๋ถ ํฌ์ธํฐ
์ด๋ฅผ ๊ทน๋ณตํด๋๊ฐ๋ ๋ชจ์ต์ด ๋ฉ์์ต๋๋ค