๐คธ๐ป ๐คธ๐ป ๐คธ๐ป
ํฌ์ธํฐ(Pointer)
- ํฌ์ธํฐ๋ ๋ณ์์ ์ฃผ์๊ฐ์ ์ ์ฅํ๋ ๊ณต๊ฐ์ด๋ค.
- int *b = &a
- int *b๋ b๊ฐ ์ด๋ค intํ ์ฃผ์๋ฅผ ๋ด์ ์ ์๋ค๋ ์๋ฏธ์ด๋ค.
- = &a๋ b์ a์ ๊ฐ์ ์ ์ฅํ๋ ์๋ฏธ์ด๋ค.
1. ๊ธฐ๋ณธ ๊ฐ๋
int a = 10;
int *b = &a;
a์ ๊ฐ์ 10, a์ ์ฃผ์๋ 0x7ffee3b8dace
b์ ๊ฐ์ a์ ์ฃผ์๊ฐ ๋๊ณ , *b์ ๊ฐ์ a์ ๊ฐ์ด ๋๋ค.
์ด๋ *๊ณผ &๋ ์๋ก ์์ํ๋ ํจ๊ณผ๋ฅผ ์ง๋๋ค. ์ฆ, *๊ณผ &๊ฐ ๊ฐ์ด ๋ง๋๋ฉด ์ฌ๋ผ์ ธ์ ํด๋น ๋ณ์๋ง ๋จ๊ฒ ๋๋ค. &๋ "์ง ์ฃผ์ ์ข ์๋ ค์ค!"๋ผ๋ ์๋ฏธ๋ผ๋ฉด, *์ "๊ทธ ์์ ์ฌ๋ ์ฌ๋(๊ฐ)์ ์๋ ค์ค!"๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. (์ฌ์ค ์๋ฏธ ํ๋ํ๋๋ฅผ ์ดํดํ๊ธฐ๋ณด๋ค, ๊ทธ๋ฅ ์์๋๋ค๋ ๊ฒ๋ง ์์๋๊ณ 1์ฐจ์ ๋ฐฐ์ด, 2์ฐจ์ ๋ฐฐ์ด ๋ฑ ์ด๋ป๊ฒ ์ฐ์ด๋์ง ์ธ์ฐ๋๊ฒ ๋ฌธ์ ํ์ด์ ๋ ํจ๊ณผ์ ์ด๋ค)
*&a๊ฐ ์๋ค๋ฉด, [ a์ ์ง์ฃผ์๋ฅผ ์๋ ค์ค -> ๊ทธ ์ง์ ๋๊ฐ์์ด? -> 10 ]
&*b๊ฐ ์๋ค๋ฉด, [ ์ฃผ์ b์์ ๋๊ฐ์์ด? -> 10 -> 10์ ์ฃผ์๋ฅผ ์๋ ค์ค ] ๊ฐ ๋๋ค.
int a = 20;
int *b = &a;
printf("%d %d %d", a, *b, *(&a));
a์ ๊ฐ์ 20์ด๋ค.
*b ์์๋ &a(a์ ๊ฐ)์ด ๋ด๊ฒจ ์์ผ๋ 20์ด๋ค.
*(&a)๋ *์ &๊ฐ ์์๋์ด a์ ๊ฐ๋ง ๋จ์ 20์ด ๋๋ค.
2. 1์ฐจ์ ๋ฐฐ์ด
int a[3] = {1, 2};
int *p = a;
print("%d %d %d\n", *a, *(a+1), *(a+2));
print("%d %d %d\n", *p, *(p+1), *(p+2));
a๊ฐ 1์ฐจ์ ๋ฐฐ์ด์ ๊ฐ์ง๊ฒ ๋๋ฉด์ int *p = a;๋ก a๊ฐ ์์๋ฅผ ๊ฐ์ก์ ๋์ ๋ฌ๋ฆฌ a ์์ &๊ฐ ์ฌ๋ผ์ก๋ค. ๊ทธ ์ด์ ๋ฅผ ์ดํด๋ณด๋ฉด, int *p = &a ์์์ &a๋ ๋ฐฐ์ด a์ ์ ์ฒด ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๊ธฐ ๋๋ฌธ์ "int 3๊ฐ ์ง๋ฆฌ ๋ฐฐ์ด์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ"๋ผ๋ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค. ์ปดํ์ผ๋ฌ๋ง๋ค ๋ค๋ฅด๊ฒ ์ง๋ง, int *p๋ "ํ ๊ฐ์ int๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ"๊ธฐ ๋๋ฌธ์ ์๋ก ํ์ ์ด ์ผ์นํ์ง ์์ ๊ฒฝ๊ณ ํน์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๋ค.
๊ทธ๋์ ๋ง์ฝ int *p = &a๋ก ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด, int (*p)[3] = &a๋ผ๊ณ ์จ์ค์ผํ๋ค.
[ ๊ณต์์ผ๋ก ๊ธฐ์ตํ์! ]
"์๋ฃํ ๋ฐฐ์ด๋ช [์์];"์ธ ๊ฒฝ์ฐ,
โ ๋ฐฐ์ด+i == &๋ฐฐ์ด[i]
โ *(๋ฐฐ์ด+i) == ๋ฐฐ์ด[i]
int *p = a๋ ๋ฐฐ์ด ์ ์ฒด๋ฅผ ์๋ฏธํ๊ธฐ๋ ํ๋, ์ปดํ์ผ๋ฌ๊ฐ ์์์ โ int *p = &a[0]์ผ๋ก ๋ณํํ๋ค. ๊ทธ๋ฆฌ๊ณ *a๋ โ *(&a[0])์ด ๋์ด *๊ณผ &๊ฐ ์์๋๊ณ a[0]๋ง ๋จ๊ฒ ๋๋ค. ๊ทธ๋ฆฌ๊ณ *(a+1)์ *(&a[0]+1)์ด ๋๋๋ฐ, +1์ด ๊ดํธ ์์ ์์ผ๋ a[0] ๋ค์ ๋ฐฐ์ด a[1]์ ๋ปํ๊ฒ ๋๋ค. ๊ทธ๋์ ๊ฒฐ๊ณผ์ ์ผ๋ก *(&a[1])์ด ๋๊ณ *๊ณผ &๋ ์์๋์ด a[1]๋ง ๋จ์ 2๊ฐ ๋๋ค. *(a+2)๋ ๋๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์ณ์ a[2]๋ง ๋๋๋ฐ ์ง๊ธ ๋ฐฐ์ด์ด {1,2}๋ก ๋์ด์์ง๋ง ํฌ๊ธฐ๋ 3์ด๊ธฐ ๋๋ฌธ์ ์ค์ง์ ์ผ๋ก {1,2,0}์ ํํ์ด๋ค. ๊ทธ๋์ a[2]๋ 0์ด ๋๋ค.
์๊น ์ค๋ช ์์ int *p = a;๋ผ๊ณ ํ์ง๋ง, ์ปดํ์ผ๋ฌ๊ฐ ์์์ โ int *p = &a[0]์ผ๋ก ๋ฐ๊ฟ์ค๋ค๊ณ ํ๋ค. ๊ทธ๋์ p๋ a[0]์ ์ฃผ์๊ฐ(&)์ ๊ฐ์ง๊ณ ์๋๋ฐ, โ p ์์ *๊ฐ ๋ถ์ผ๋ &์ *์ด ์์๋์ด a[0]์ ๊ฐ์ ์๋ ค๋ฌ๋ผ๋ ์๋ฏธ๋ก ๋ณํํ๊ฒ ๋๋ค. ๊ทธ๋ฌ๋ฉด *p๋ a[0]์ธ ๊ฐ 1์ด ๋๊ณ *(p+1)์ *(&a[0]+1)์ด ๋์ด์ a[1]์ธ 2๊ฐ ๋๊ณ , *(p+2)๋ *(&a[0]+2)๋ก a[2]๊ฐ ๋์ด 0์ ๊ฐ์ ๊ฐ์ง๋ค.
3. 2์ฐจ์ ๋ฐฐ์ด
- 2์ฐจ์ ๋ฐฐ์ด๊ณผ 1์ฐจ์ ํฌ์ธํฐ
int a[3][2] = {{1, 2}, {3, 4}, {5, 6}};
int *p = a[1];
printf("%d %d %d\n", *a[0], *a[1], *a[2]);
printf("%d %d %d\n", **a, **(a+1), **(a+2);
printf("%d %d\n", *p, *(p+1));
printf("%d %d\n", p[0], p[1]);
์์์ โ a = &a[0]์ด ๋๋ค๊ณ ํ์๋ค. ์ฌ๊ธฐ๋ ๋๊ฐ๋ค. *a[0]์ *(&a[0][0]) ๋ถ๊ณ *๊ณผ &์ ์์๋์ด a[0][0]๋ง ๋จ์ 1์ ์ถ๋ ฅํ๋ค. *a[1]์ *(&a[1][0])์ด ๋๊ณ a[1][0]์ผ๋ก 3์ ์ถ๋ ฅํ๋ค.
**a๋ ๊ฐ๋ค. **(&a[0])์ด ๋๊ณ *์ &๊ฐ ์์๋์ด *(a[0])์ด ๋ ํ ๋ค์ *(&a[0][0])์ผ๋ก a[0][0]๋ง ๋จ๋๋ค. ๊ทธ๋ก์ธํด ๊ฐ์ 1์ด ๋๋ค. ๊ทธ๋ฅ ์ฝ๊ฒ ์๊ฐํด์ *๋ฅผ ์์ ๊ณ ์ถ์ผ๋ฉด &๋ฅผ ๊ฐ์ ธ์์ผํ๋๋ฐ &๋ [0]๊ณผ ํ ๋ฌถ์์ด๋ผ ๊ฐ์ด ๊ฐ์ ธ์จ๋ค๊ณ ์ธ์ฐ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค. ๋ค์ ์ด์ด์ **(a+1)๋ ์ดํด๋ณด์ **(&a[1])์ด ๋๊ณ *(a[1])์ด ๋์๋ค. *(&a[1][0])์ด ๋๊ณ ์๋ก ์์๋์ด a[1][0]๋ง ๋จ์ 3์ ์ถ๋ ฅํ๋ค.
p๋ a[1]์ ์ฃผ์๊ฐ์ธ &a[1][0] ๊ฐ์ง๋ค. *p๋ *(&a[1][0])์ด ๋์ด a[1][0]์ด ๋๋ค. ๊ทธ๋ฌ๋ฉด ๊ฐ์ 3์ด ๋๋ ๊ฒ์ด๋ค. *(p+1)์ *(&a[1][0]+1)๋ก a[1][0]๋ค์ ๊ฐ์ธ a[1][1]์ด ๋๋ค. ๊ทธ๋์ 4๋ฅผ ์ถ๋ ฅํ๋ค.
p[0]๋ *(p+0)๊ณผ ๊ฐ๋ค. ์ด์ ๋ ํฌ์ธํฐ ์ฐ์ฐ์๋ฅผ ๋ ์ดํด๋ด์ผํ๋๋ฐ ๊ฐ๋จํ๊ฒ ์ค๋ช ํ์๋ฉด c์ธ์ด์์ ๋ฐฐ์ด๊ณผ ์ธ๋ฑ์ค๋ ํฌ์ธํฐ ์ฐ์ฐ์๋ก ๋ณํ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋์ *(p+0)์ p๊ฐ a[1]์์ ์์ํ๋ *(&a[1][0])์ด ๋์ด a[1][0]์ ๊ฐ์ธ 3์ ๊ฐ์ง๋ค. p[1]๋ ๋ง์ฐฌ๊ฐ์ง๋ค. *(p+1)์ด ๋๊ณ *(&a[1][1])๋ก 4๊ฐ ์ถ๋ ฅ๋๋ค.
- 2์ฐจ์ ๋ฐฐ์ด๊ณผ ํฌ์ธํฐ ๋ฐฐ์ด
int a[3][2] = {{1,2}, {3,4}, {5,6}};
int *p[3] = {a[2], a[0], a[1]};
printf("%d, %d\n", *a[0], *a[1]);
printf("%d, %d\n", p[1][0], p[2][0]);
printf("%d, %d\n", *p[1], *p[2]);
*a[0]์ *(&a[0[0])์ด ๋์ด์ 1์ด ์ถ๋ ฅ๋๋ค. *a[1]์ *(&a[1][0])์ผ๋ก 3์ด ์ถ๋ ฅ๋๋ค.
p๋ int * 3๊ฐ์ง๋ฆฌ ๋ฐฐ์ด์ด๋ค. p[1][0]์ ์ดํด๋ณด์. p[1]์ a[0]์ ์ ์ฅํ๊ณ ์๋ค. ๊ทธ๋์ p[1][0]์ *(p[1]+0) -> *(a[0]+0) -> *(&a[0][0])์ด ๋์ด 1์ด ์ถ๋ ฅ๋๋ค. p[2][0]์ p[2]๊ฐ a[1]์ ์ ์ฅํ๊ณ ์์ผ๋, *(&a[1][0])์ผ๋ก 3์ด ๋๋ค.
p์ ๋ํด์ ๋ ์ฝ๊ฒ ์๊ฐํ ์ ์๋ค. p์ 0๋ฒ์งธ ํ์ a์ 2๋ฒ์ฌ ํ์ด ๋ค์ด๊ฐ๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
p[1] a[0][0]
1a[0][1]
2p[2] a[1][0]
3a[1][1]
4p[0] a[2][0]
5a[2][1]
6
๊ทธ๋ฌ๋ฉด *p[1]๋ *(&p[1][0])์ด ๋์ด 1์ด ์ถ๋ ฅ๋๊ณ , *p[2]๋ *(&p[2][0])์ด ๋์ด 3์ด ์ถ๋ ฅ๋๋ค.
- 2์ฐจ์ ๋ฐฐ์ด๊ณผ 2์ฐจ์ ํฌ์ธํฐ
int a[3][2] = {{1, 2}, {3, 4}, {5, 6}};
int (*p)[2] = a;
int (*q)[2] = a+1;
printf("%d %d %d \n", p[0][0], p[0][1], p[1][0]);
printf("%d %d %d \n", q[0][0], q[0][1], q[1][0]);
๋ณ์ p๋ &a[0]์ ๊ฐ๋ฆฌํจ๋ค. ๊ทธ๋ฌ๋ฉด p[0]์ *(p+0)์ด ๋๊ณ *(&a[0])์ด ๋๋ฉด์ a[0]์ด ๋๋ค. ๊ทธ๋ฌ๋ฉด p[0][0]์ *(*(p+0)+0))์ด ๋๊ณ *(*(&a[0])+0) -> *(a[0]+0) -> *(&a[0][0]) -> 1์ด ๋๋ค. p[0][1]์ *(*(p+0)+1) -> *(*(&a[0])+1) -> *(&(a[0][1])) -> 2๊ฐ๋๋ค.
๋ณ์ q๋ &a[1]์ ๊ฐ๋ฆฌํจ๋ค. ๊ทธ๋ฌ๋ฉด q[0][0] -> *(*(q+0)+0) -> *(*(&a[1])+0) -> *(&a[1][1]) -> 3์ด ๋๋ค. q[0][1]์ *(*(q+0)+1) -> *(*(&a[1])+1) -> *(&a[1][2]) -> 4๊ฐ ๋๋ค.
4. ๊ตฌ์กฐ์ฒด์ ํฌ์ธํฐ
- ์ผ๋ฐ ๊ตฌ์กฐ์ฒด ๋ณ์๋ก ์ ๊ทผํ ๋ .์ผ๋ก ์ ๊ทผํ๋ค.
- ๊ตฌ์กฐ์ฒด ํฌ์ธํฐ๋ก ์ ๊ทผํ ๋๋ ->๋ก ์ ๊ทผํ๋ค.
struct Student {
char gender;
int age;
};
void main(){
struct Student s[3] = { 'F', 21, 'M', 20, 'M', 24};
struct Student *p = s;
printf("%c %d\n", s[0].gender, s[0].age);
printf("%c %d\n", (*s).gender, (*s).age);
printf("%c %d\n", s->gender, s->age);
printf("%c %d\n", (s+1)->gender, (s+1)->age);
printf("%c %d\n", p[0].gender, p[0].age);
printf("%c %d\n", (*p).gender, (*p).age);
printf("%c %d\n", p->gender, p->age);
printf("%c %d\n", (p+1)->gender, (p+1)->age);
}
๊ตฌ์กฐ์ฒด์์ .์ ์ผ๋ฐ ๊ตฌ์กฐ์ฒด ๋ณ์์ ์ ๊ทผํ ๋ ์ฌ์ฉํ๋ค๊ณ ํ๋ค. ์ฝ๊ฒ ์๊ฐํ๋ฉด ์ฃผ์๊ฐ ์๋ ๊ฐ์ ๋ฐ๋ก ์ ๊ทผํ๋ฉด .์ ์ฌ์ฉํ๋ค๊ณ ๋ณด๋ฉด ๋ ๊ฒ ๊ฐ๋ค. ์์ ์ฝ๋๋ฅผ ํ์ธํด๋ณด๋, .์ s[0], *s, p[0], *p์ ๊ฐ์ด ๊ทธ ๊ฐ์ ๊ฐ๋ฆฌํฌ ๋ ์ฌ์ฉํ๋ค. ->๋ s, (s+1), p, (p+1)๊ณผ ๊ฐ์ด &๊ฐ ๋ถ๋ ๊ณณ์ ์ฌ์ฉํ๋ค. ์๋ง ์์ ๋ด์ฉ์ ์ถฉ๋ถํ ์ดํดํ๋ค๋ฉด ๊ตฌ์กฐ์ฒด ํฌ์ธํฐ๋ ์ด๋ ต์ง ์๊ฒ ๋ฐ๋ก ์ดํดํ ์ ์์ ๊ฒ์ด๋ค.
5. ๋ฌธ์
- ๋ฌธ์์ด
char *p = "KOREA";
printf("%s\n", p);
printf("%s\n", p+3);
printf("%c\n", *p);
printf("%c\n", *(p+3));
printf("%c\n", *p+2);
"KOREA"๋ ๋ฌธ์ 6๊ฐ ์ง๋ฆฌ ์์ ๋ฌธ์์ด์ด๋ค. ์ค์ ๋ฉ๋ชจ๋ฆฌ์๋ K O R E A null ์ด๋ ๊ฒ ์ด 6๋ฐ์ดํธ๊ฐ ์ ์ฅ๋๋ค. ์ฌ๊ธฐ์ "KOREA"๋ ๋ฌธ์์ด ์์์ ์ฒซ๋ฒ์งธ ๋ฌธ์๋ก K์ ์ฃผ์๋ก ์๋ ๋ณํ๋๋ฉด์ "KOREA"๊ฐ &"KOREA"[0]๊ฐ ๋๊ณ ๊ฒฐ๊ตญ &p[0]์ด ๋๋ค. ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ํ์ด๋ผ๋ฉด, %s๋ฅผ ์ผ๋์ง, %c๋ฅผ ์ผ๋์ง๋ฅผ ๋ณด๊ณ ๋ฌธ์์ด์ด ์ถ๋ ฅ๋๋์ง ๋ฌธ์ ํ๋๊ฐ ์ถ๋ ฅ๋๋์ง ์ ์ ์๋ค. ์๋ํ๋ฉด %s๋ ๋ฌธ์์ด ํฌ๋งท์ผ๋ก ๋ฌธ์์ด์ ์ถ๋ ฅ๋๋ ๋ฐฉ์์ด ์ฃผ์๊ฐ์ ํ๋ ๋ฐ์์ ๊ทธ ์ฃผ์์ ๋ค์ด์๋ ๊ฒ์ null์ด ๋์ฌ ๋ ๊น์ง ์ฐจ๋ก๋๋ก ์ฝ๊ธฐ ๋๋ฌธ์ด๋ค.
[ ํด์ค ]
1. KOREA
: p๋ ์ฃผ์๋ฅผ ์ ์ฅํ๊ณ ์๋ค. ๊ทธ๋์ %s๊ฐ p์ ์ฒซ๋ฒ์งธ ๋ฌธ์ ์ฃผ์๋ก๊ฐ์ null ๊ฐ์ด ๋์ฌ ๋๊น์ง ์ฐจ๋ก๋ก ์ฝ๊ธฐ ๋๋ฌธ์ KOREA๊ฐ ์ถ๋ ฅ๋๋ค. , &p[0]
2. EA
: p+3์ p๊ฐ K์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์์์ผ๋ ๊ฑฐ๊ธฐ์ 3๊ฐ๋ฅผ ๊ฑด๋๊ฐ๋ฉด E๊ฐ ๋์จ๋ค. ๊ทธ๋์ E์ ์ฃผ์๋ก ๊ฐ์ null ๊ฐ์ด ๋์ฌ ๋๊น์ง ์ฐจ๋ก๋ก ์ฝ์ผ๋ EA๊ฐ ๋๋ค. , &p[3]
3. K
: *p๋ p์ ๊ฐ์ ๋งํ๋ ๊ฒ์ผ๋ก, p[0]์ ๊ฐ์ ์๋ฏธํ์ฌ K๊ฐ ๋๋ค. , *(&p[0]) = p[0]
4. E
: *(p+3)์ p์ 3๋ฒ์งธ ์ฃผ์์ ๊ฐ์ ์๋ฏธํ์ฌ E๊ฐ ๋๋ค. , *(&p[0]+3) = *(&p[3]) = p[3]
5. M
: *p+2๋ *์ด ๊ดํธ ์์ด p์ ๋ถ์ด์๋ค. ๊ทธ๋ ๋ค๋ ๊ฒ์ 3๋ฒ์ฒ๋ผ *p๊ฐ p[0]์ ์๋ฏธํ๋ฉฐ, ๊ทธ ๊ฐ์์ 2๋ฅผ ๋ํ ๊ฐ์ด ๋๋ค. p[0]์ K์ด๊ณ K ๋ค์์ L ๊ทธ ๋ค์์ M์ด๋ 2๋ฅผ ๋ํ ๊ฐ์ M์ด ๋๋ค. , *(&p[0])+2 = p[0]+2 = M
[ ๋ต ]
1. KOREA
2. EA
3. K
4. E
5. M
- ๊ตฌ์กฐ์ฒด ํฌ์ธํฐ ๋ฌธ์
struct Pointer1 {
char name[10];
int age;
};
void main() {
struct Pointer1 p[] = {"Lee", 10, "Park", 19, "Baek", 21, "Yoon", 13};
struct Pointer1 *s;
p = s;
p++;
printf("%s\n", s->name);
printf("%d\n", s->age);
}
[ ํ์ด ]
p = &s[0]์ผ๋ก p๋ "Lee"๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฃผ์๊ฐ์ ๊ฐ์ง๊ณ ์์ ๊ฒ์ด๋ค. ๊ทธ๋ฐ๋ฐ printf๋ก ์ถ๋ ฅํ๊ธฐ ์ , p++๋ฅผ ํตํด &s[0]์ด ์ฆ๊ฐํ์ฌ &s[1]์ด ๋์๋ค. ๊ทธ๋ฌ๋ฉด "Lee"๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฃผ์๊ฐ์ "Park"์ผ๋ก ๋ณ๋๋์์ ๊ฒ์ด๋ค. ์ด ์ํ์์ p -> name๊ณผ p -> age๋ฅผ ์ถ๋ ฅํ๋ค๋ฉด, ํ์ฌ p๋ s[1]์ ์ฃผ์๊ฐ์ ๊ฐ๋ฆฌํค๋ ->๋ฅผ ์ฌ์ฉํ์ฌ ๋ํ๋๊ณ ๊ฐ name๊ณผ age๋ Park์ 19๊ฐ ๋ ๊ฒ์ด๋ค.
[ ๋ต ]
Park
19
'๐ ์๊ฒฉ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ] ํท๊ฐ๋ฆฌ๋ ์ฉ์ด์ ๋ฆฌ - ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ณด์ ๊ตฌ์ถ๐คธ๐ป (0) | 2025.04.08 |
---|