๐Ÿคธ๐Ÿป ๐Ÿคธ๐Ÿป ๐Ÿคธ๐Ÿป

 

 

 

 

ํฌ์ธํ„ฐ(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]
1
a[0][1]
2
p[2] a[1][0]
3
a[1][1]
4
p[0] a[2][0]
5
a[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

 

 

 

๐Ÿคธ๐Ÿป ๐Ÿคธ๐Ÿป ๐Ÿคธ๐Ÿป

 

 

 

1. SIEM (Security Information and Event Management)

  • ๋‹ค์–‘ํ•œ ๋ณด์•ˆ ์žฅ๋น„์™€ ์„œ๋ฒ„, ๋„คํŠธ์›Œํฌ ์žฅ๋น„ ๋“ฑ์œผ๋กœ๋ถ€ํ„ฐ ๋ณด์•ˆ ๋กœ๊ทธ์™€ ์ด๋ฒคํŠธ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•œ ํ›„ ์ •๋ณด ๊ฐ„์˜ ์—ฐ๊ด€์„ฑ์„ ๋ถ„์„ํ•˜์—ฌ ์œ„ํ˜‘ ์ƒํ™ฉ์„ ์ธ์ง€ํ•˜๊ณ , ์นจํ•ด์‚ฌ๊ณ ์— ์‹ ์†ํ•˜๊ฒŒ ๋Œ€์‘ํ•˜๋Š” ๋ณด์•ˆ ๊ด€์ œ ์†”๋ฃจ์…˜
  • ๊ธฐ์—…์—์„œ ์ƒ์„ฑ๋˜๋Š” ํ…Œ๋ผ๋ฐ”์ดํŠธ๊ธ‰์˜ ์ •ํ˜•-๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ์™€ ๋ฐฉํ™”๋ฒฝ, ์•ˆํ‹ฐ๋ฐ”์ด๋Ÿฌ์Šค ์‹œ์Šคํ…œ, ์„œ๋ฒ„, ๋„คํŠธ์›Œํฌ ์žฅ๋น„ ๋“ฑ์œผ๋กœ๋ถ€ํ„ฐ ์ˆ˜์ง‘ํ•œ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๋“ฑ์„ ๋น…๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜์˜ ๋กœ๊ทธ ๋ถ„์„์„ ํ†ตํ•˜์—ฌ ๋ณด์•ˆ์˜ ์œ„ํ˜‘ ์ง•ํ›„๋ฅผ ๋น ๋ฅด๊ฒŒ ํŒ๋‹จ-๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๋ณด์•ˆ ๊ด€์ œ ์†”๋ฃจ์…˜
  • ๊ฒฐ๋ก ์ ์œผ๋กœ, ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ณด์•ˆ๊ด€์ œ ์†”๋ฃจ์…˜

 

2. ์นจ์ž… ํƒ์ง€ ์‹œ์Šคํ…œ(IPS;Intrusion Prevention System)

  • ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•œ ๊ณต๊ฒฉ์ด๋‚˜ ์นจ์ž…์„ ์‹ค์‹œ๊ฐ„์ ์œผ๋กœ ์ฐจ๋‹จํ•˜๊ณ , ์œ ํ•ดํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•œ ์กฐ์น˜๋ฅผ ๋Šฅ๋™์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ

 

3. ์นจ์ž… ๋ฐฉ์ง€ ์‹œ์Šคํ…œ(IDS; Intrusion Detect System)

  • ๋„คํŠธ์›Œํฌ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๋น„์ธ๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž์› ์ ‘๊ทผ๊ณผ ๋ณด์•ˆ ์ •์ฑ… ์œ„๋ฐ˜ ํ–‰์œ„๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํƒ์ง€ํ•˜๋Š” ๊ธฐ๋Šฅ

 

4. PIA(Privacy Impact Assessment)

  • ๊ฐœ์ธ์ •๋ณด๋ฅผ ํ™œ์šฉํ•˜๋Š” ์ƒˆ๋กœ์šด ์ •๋ณด ์‹œ์Šคํ…œ์˜ ๋„์ž…์ด๋‚˜ ๊ฐœ์ธ์ •๋ณด ์ทจ๊ธ‰์ด ์ˆ˜๋ฐ˜๋˜๋Š” ๊ธฐ์กด ์ •๋ณด ์‹œ์Šคํ…œ์˜ ์ค‘๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‹œ, ๋™ ์‹œ์Šคํ…œ์˜ ๊ตฌ์ถ• ์šด์˜ ๋ณ€๊ฒฝ ๋“ฑ์ด ํ”„๋ผ์ด๋ฒ„์‹œ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์— ๋Œ€ํ•˜์—ฌ ์‚ฌ์ „์— ์กฐ์‚ฌ ๋ฐ ์˜ˆ์ธก, ๊ฒ€ํ† ํ•˜์—ฌ ๊ฐœ์„  ๋ฐฉ์•ˆ์„ ๋„์ถœํ•˜๋Š” ์ฒด๊ณ„์ ์ธ ์ ˆ์ฐจ

 

5. ESM(Enterprise Security Management)

  • ๋ฐฉํ™”๋ฒฝ, ์นจ์ž… ํƒ์ง€ ์‹œ์Šคํ…œ, UTM, ๊ฐ€์ƒ์‚ฌ์„ค๋ง ๋“ฑ์˜ ์—ฌ๋Ÿฌ ๋ณด์•ˆ ์‹œ์Šคํ…œ์œผ๋กœ๋ถ€ํ„ฐ ๋ฐœ์ƒํ•œ ๊ฐ์ข… ์ด๋ฒคํŠธ ๋ฐ ๋กœ๊ทธ๋ฅผ ํ†ตํ•ฉํ•ด์„œ ๊ด€๋ฆฌ, ๋ถ„์„, ๋Œ€์‘ํ•˜๋Š” ์ „์‚ฌ์  ํ†ตํ•ฉ ๋ณด์•ˆ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ
  • ์„œ๋กœ ๋‹ค๋ฅธ ๊ธฐ์ข…์˜ ๋ณด์•ˆ ์žฅ๋น„๋“ค์„ ํ†ตํ•ฉ ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ๊ณผ ๋„คํŠธ์›Œํฌ ์ž์› ํ˜„ํ™ฉ์˜ ๋ณด์•ˆ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ธฐ๋Šฅ์ด ์žˆ๊ณ , ์ฃผ๋กœ ์ด๋ฒคํŠธ ์œ„์ฃผ์˜ ๋‹จ์‹œ๊ฐ„ ์œ„ํ˜‘ ๋ถ„์„ ๋ฐ DBMS ๊ธฐ๋ฐ˜์˜ ๋ณด์•ˆ ๊ด€๋ฆฌ ์†”๋ฃจ์…˜

 

6. ISMS(Information Sercurity Management System)

  • ์กฐ์ง์˜ ์ฃผ์š” ์ •๋ณด์ž์‚ฐ์„ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์ •๋ณด๋ณดํ˜ธ ๊ด€๋ฆฌ ์ ˆ์ฐจ์™€ ๊ณผ์ •์„ ์ฒด๊ณ„์ ์œผ๋กœ ์ˆ˜๋ฆฝํ•˜์—ฌ ์ง€์†์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์šด์˜ํ•˜๊ธฐ ์œ„ํ•œ ์ข…ํ•ฉ์ ์ธ ์ฒด๊ณ„

7.  PMS(Productive Management System)

  • ๊ธฐ์—…์ด ๊ฐœ์ธ์ •๋ณด๋ณดํ˜ธ ํ™œ๋™์„ ์ฒด๊ณ„์ , ์ง€์†์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ณดํ˜ธ์กฐ์น˜ ์ฒด๊ณ„๋ฅผ ๊ตฌ์ถ•ํ–ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์ ๊ฒ€, ํ‰๊ฐ€ํ•˜์—ฌ ๊ธฐ์—…์—๊ฒŒ ๋ถ€์—ฌํ•˜๋Š” ์ธ์ฆ์ œ๋„

+ Recent posts