Post

[C] ํฌ์ธํ„ฐ

๐Ÿ“Œ ๋“ค์–ด๊ฐ€๋ฉฐ

C์—์„œ ๊ฐ€์žฅ ์–ด๋ ต๋‹ค๊ณ  ์†Œ๋ฌธ๋‚œ ํฌ์ธํ„ฐ ์ฐจ๋ก€๋‹ค. ์‹ค์ œ๋กœ ๋ฐฐ์šธ ๋•Œ ํ—ท๊ฐˆ๋ฆฌ๋Š” ์ ์ด ๋งŽ์•˜์ง€๋งŒ, ํ•ต์‹ฌ์€ ํ•˜๋‚˜๋‹ค. โ€œ๋ณ€์ˆ˜์— ๊ฐ’์ด ์•„๋‹ˆ๋ผ โ€˜์ฃผ์†Œโ€™๋ฅผ ๋‹ด๋Š”๋‹ค.โ€ ์ด ๊ด€์ ๋งŒ ์žก์œผ๋ฉด ๋‚˜๋จธ์ง€๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋”ฐ๋ผ์˜จ๋‹ค.

๋จผ์ € ๊ธฐ์ดˆ ๊ฐœ๋…๋ถ€ํ„ฐ ์ •๋ฆฌํ•˜์ž.

๊ฐœ๋…์ •์˜
๋ฉ”๋ชจ๋ฆฌ์—ฐ์†๋œ 1byte ๋‹จ์œ„ ๊ณต๊ฐ„๋“ค. ๊ฐ byte๋Š” ๊ณ ์œ ํ•œ ์ฃผ์†Œ๋กœ ์ ‘๊ทผ
์ฃผ์†Œ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ์œ„์น˜์˜ ๊ณ ์œ ๊ฐ’ (ํƒ€์ž…๊ณผ ๋ฌด๊ด€)
์ฃผ์†Œ ์—ฐ์‚ฐ์ž &๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋œ ์ฃผ์†Œ๊ฐ’์„ ๋ฐ˜ํ™˜
์ฐธ์กฐ ์—ฐ์‚ฐ์ž *ํฌ์ธํ„ฐ๊ฐ€ ๋‹ด์€ ์ฃผ์†Œ๋กœ ์ฐพ์•„๊ฐ€ ๊ทธ ์•ˆ์˜ โ€˜๊ฐ’โ€™์„ ์ฝ๊ธฐ/์“ฐ๊ธฐ

๐Ÿ’ก int๋Š” 4byte๋ผ์„œ ์—ฐ์†๋œ 1byte ร— 4์นธ์— ์ €์žฅ๋œ๋‹ค. ์ฃผ์†Œ๋Š” ๊ทธ์ค‘ ์ฒซ ๋ฒˆ์งธ byte(์‹œ์ž‘์ )๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. Windows์—์„œ ์ฃผ์†Œ๋Š” 4byte(16์ง„์ˆ˜ 8์ž๋ฆฌ), Mac/Linux์—์„œ๋Š” 8byte๋‹ค.


1. ์ฃผ์†Œ ์ถœ๋ ฅํ•ด๋ณด๊ธฐ (%p)

%d๋Š” ์ •์ˆ˜ ์„œ์‹, %p๋Š” ์ฃผ์†Œ ์„œ์‹์ด๋‹ค. &n์œผ๋กœ ๋ณ€์ˆ˜ n์˜ ์ฃผ์†Œ๋ฅผ ์ถœ๋ ฅํ•ด ๋ณด์ž.

1
2
3
int n = ...;
printf("๊ฐ’ = %d\n", n);
printf("์ฃผ์†Œ = %p\n", &n);   // %p โ†’ 16์ง„์ˆ˜ 8์ž๋ฆฌ (4byte)

Desktop View

Desktop View

์ฃผ์†Œ๋Š” 16์ง„์ˆ˜(0~F)๋กœ ํ‘œํ˜„๋œ๋‹ค. (16์ง„์ˆ˜ 2์ž๋ฆฌ = 1byte)


2. ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ โ€” ๊ฐ’์ด ์•„๋‹Œ โ€˜์ฃผ์†Œโ€™๋ฅผ ๋‹ด๋Š”๋‹ค

์ง€๊ธˆ๊นŒ์ง€๋Š” ๋ณ€์ˆ˜์— โ€˜๊ฐ’โ€™์„ ๋‹ด์•˜๋‹ค. ํฌ์ธํ„ฐ๋Š” ๋ณ€์ˆ˜์— โ€˜์ฃผ์†Œโ€™๋ฅผ ๋‹ด๋Š”๋‹ค.

1
2
3
int n = 100;
int *p;      // int ํƒ€์ž… ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ (ํƒ€์ž… ๋’ค์— *)
p = &n;      // p์— n์˜ '์ฃผ์†Œ'๋ฅผ ๋‹ด์Œ
1
2
3
4
5
     n                    p
  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”           โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
  โ”‚  100  โ”‚  โ—„โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”‚ &n(์ฃผ์†Œ) โ”‚
  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜           โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
   0x...A0              p๋Š” n์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค(pointing)

Desktop View

Desktop View

p์™€ &n์˜ ๊ฐ’์ด ๊ฐ™๋‹ค. p๋Š” &๋ฅผ ์•ˆ ๋ถ™์—ฌ๋„ ๊ทธ ์ž์ฒด๊ฐ€ ์ฃผ์†Œ๋ฅผ ๋‹ด์€ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋ผ์„œ ์ฃผ์†Œ๊ฐ’์ด ๋‚˜์˜จ๋‹ค.

์ฐธ์กฐ ์—ฐ์‚ฐ์ž *๋กœ ๊ฐ’ ์ฝ๊ธฐ

1
printf("%d\n", *p);   // *p โ†’ p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ์†Œ๋กœ ๊ฐ€์„œ ๊ทธ ๊ฐ’์„ ์ฝ์Œ

Desktop View

Desktop View

*p๋Š” p๊ฐ€ ๋‹ด์€ ์ฃผ์†Œ(=n์˜ ์ฃผ์†Œ)๋กœ ์ฐพ์•„๊ฐ€ ๊ทธ ๊ฐ’ 100์„ ์ถœ๋ ฅํ•œ๋‹ค.

์ฐธ์กฐ ์—ฐ์‚ฐ์ž๋กœ ๊ฐ’ ์“ฐ๊ธฐ

*๋Š” ์ฝ๊ธฐ๋ฟ ์•„๋‹ˆ๋ผ ์“ฐ๊ธฐ๋„ ๋œ๋‹ค.

1
2
int *p2 = &n;   // p2๋„ n์„ ๊ฐ€๋ฆฌํ‚ด
*p = 500;       // p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ณณ(n)์˜ ๊ฐ’์„ 500์œผ๋กœ ๋ณ€๊ฒฝ

Desktop View

Desktop View

*p = 500; ํ›„์—๋Š” ๊ฐ™์€ ๊ณณ์„ ๊ฐ€๋ฆฌํ‚ค๋˜ n, *p, *p2๊ฐ€ ๋ชจ๋‘ 500์ด ๋œ๋‹ค.

โš ๏ธ ํฌ์ธํ„ฐ์— ์ง์ ‘ ์ˆซ์ž๋ฅผ ๋Œ€์ž…ํ•˜๋Š” ๊ฑด ๋งค์šฐ ์œ„ํ—˜ํ•˜๋‹ค. p = 100;์ด๋ผ๊ณ  ์“ฐ๋ฉด ์ฐธ์กฐ๊ฐ’์ด ์•„๋‹ˆ๋ผ ์ฃผ์†Œ๊ฐ’ ์ž์ฒด๊ฐ€ 100์ด ๋˜์–ด๋ฒ„๋ ค ์—‰๋šฑํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.


3. ํฌ์ธํ„ฐ ์—ฐ์‚ฐ

๋“ค์–ด๊ฐ€๊ธฐ ์ „์— 3๊ฐ€์ง€๋ฅผ ์งš์ž.

ํ•ญ๋ชฉ์˜๋ฏธ
ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์ฃผ์†Œ๊ฐ€ ๋“ค์–ด๊ฐ
*ํฌ์ธํ„ฐ๊ทธ ์ฃผ์†Œ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’
ํฌ์ธํ„ฐ ํƒ€์ž…๊ทธ ์ฃผ์†Œ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’์˜ ํƒ€์ž…

๋”ฐ๋ผ์„œ ํฌ์ธํ„ฐ์— +, -๋ฅผ ํ•˜๋ฉด ์ฃผ์†Œ๊ฐ’์„ ์ฆ๊ฐํ•˜๋Š” ๊ฒƒ์ด๊ณ , ์–ผ๋งˆ๋งŒํผ ์ฆ๊ฐํ•˜๋Š”์ง€๋Š” โ€˜ํฌ์ธํ„ฐ ํƒ€์ž…โ€™์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค.

int*(int ํฌ์ธํ„ฐ)๋Š” ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’์ด 4byte๋ผ์„œ, +1 ํ•˜๋ฉด ์ฃผ์†Œ๊ฐ€ 4 ์ฆ๊ฐ€ํ•œ๋‹ค.

Desktop View

Desktop View

n = 555, p = &n์ผ ๋•Œ ๊ฒฐ๊ณผ๋ฅผ ์ •๋ฆฌํ•˜๋ฉด:

์‹๊ฒฐ๊ณผ
n + 1556 (๋‹จ์ˆœ ์ •์ˆ˜ ๋ง์…ˆ)
p + 1์ฃผ์†Œ๊ฐ€ +4byte (int๋ผ์„œ)
*p + 1556 (๊ฐ’ 555์— +1)
*(p + 1)์“ฐ๋ ˆ๊ธฐ๊ฐ’ (๋ชจ๋ฅด๋Š” ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐ)

*(p+1)์€ 4byte ๋’ค์˜ ์•Œ ์ˆ˜ ์—†๋Š” ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐํ•˜๋ฏ€๋กœ ์“ฐ๋ ˆ๊ธฐ๊ฐ’์ด ๋‚˜์˜จ๋‹ค. ๊ด„ํ˜ธ(์—ฐ์‚ฐ ์ˆœ์„œ)๋ฅผ ์ •ํ™•ํžˆ ํŒŒ์•…ํ•ด์•ผ ํ•œ๋‹ค.

1
2
3
4
ํƒ€์ž…๋ณ„ +1 ์ฆ๊ฐ€๋Ÿ‰
  short* โ†’ +2 byte
  int*   โ†’ +4 byte
  double* โ†’ +8 byte

4. ํฌ์ธํ„ฐ์™€ ๋ฐฐ์—ด

โ˜… ๋น„๋ฐ€ ํ•˜๋‚˜: ์‚ฌ์‹ค ๋ฐฐ์—ด์€ ํฌ์ธํ„ฐ์˜ ๋˜ ๋‹ค๋ฅธ ์ด๋ฆ„์ด๋‹ค. ํฌ์ธํ„ฐ โ€˜์ƒ์ˆ˜โ€™์ธ ์…ˆ์ด๋‹ค.

๊ทธ๋ž˜์„œ ๋ฐฐ์—ด ์ฒจ์ž ์—ฐ์‚ฐ์ž [ ]๋Š” ๊ฒฐ๊ตญ ํฌ์ธํ„ฐ ์—ฐ์‚ฐ์ด๋ฉฐ, ๋‹ค์Œ ๊ณต์‹์ด ์„ฑ๋ฆฝํ•œ๋‹ค.

1
arr[n]  โ‰ก  *(arr + n)      โ˜…โ˜…โ˜…โ˜…โ˜…

Desktop View

๋ฐฐ์—ด arr = {10, 20, 30}์˜ ์ฃผ์†Œ๋ฅผ ์‚ดํŽด๋ณด์ž. ๋ฐฐ์—ด ์ด๋ฆ„ arr์—” &๊ฐ€ ์•ˆ ๋ถ™๊ณ , ์›์†Œ arr[n]์—” &๊ฐ€ ๋ถ™๋Š”๋‹ค. ๋ฐฐ์—ด ์ž์ฒด๋Š” ํฌ์ธํ„ฐ(์ฃผ์†Œ)์ด๊ณ , ์›์†Œ๋Š” ์ •์ˆ˜๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

Desktop View

1
2
3
4
5
6
7
arr[0]   arr[1]   arr[2]
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  10  โ”‚  20  โ”‚  30  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜
0x..A0  0x..A4  0x..A8   โ† ์ฃผ์†Œ๊ฐ€ 4์”ฉ ์ฆ๊ฐ€
  โ–ฒ
  arr == &arr[0]  (๋ฐฐ์—ด ์ฃผ์†Œ = ์ฒซ ์›์†Œ์˜ ์ฃผ์†Œ = ์‹œ์ž‘์ )

์›์†Œ ์ฃผ์†Œ๊ฐ€ 4์”ฉ ์ฆ๊ฐ€ํ•˜๊ณ , arr๊ณผ arr[0]์˜ ์ฃผ์†Œ๊ฐ€ ๊ฐ™๋‹ค. ๋ฐฐ์—ด์˜ ์ฃผ์†Œ๋Š” ๊ณง ์ฒซ ์›์†Œ์˜ ์ฃผ์†Œ(์‹œ์ž‘์ )๋‹ค.

Desktop View

Desktop View

arr + n์€ &arr[n]๊ณผ ๊ฐ™๊ณ , *(arr + n)์€ arr[n]๊ณผ ๊ฐ™๋‹ค. ๊ณต์‹์ด ์„ฑ๋ฆฝํ•จ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋กœ ๋ฐฐ์—ด ์ž์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฉด, ๊ทธ ํฌ์ธํ„ฐ๊ฐ€ ๋ฐฐ์—ด์ฒ˜๋Ÿผ ๋™์ž‘ํ•œ๋‹ค.

Desktop View

Desktop View

๋ฐฐ์—ด vs ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ โ€” ์™œ ํฌ์ธํ„ฐ๋ฅผ ์“ธ๊นŒ?

Desktop View

๋ฐ์ดํ„ฐ ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅด๋‹ค. int arr[3]์€ sizeof๊ฐ€ 4 ร— 3 = 12byte์ง€๋งŒ, ๊ทธ ๋ฐฐ์—ด์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ p๋Š” sizeof(p)๊ฐ€ 4byte๋‹ค. (๋ชจ๋“  ํฌ์ธํ„ฐ ์ฃผ์†Œ ์šฉ๋Ÿ‰์€ ํƒ€์ž…๊ณผ ๋ฌด๊ด€ํ•˜๊ฒŒ 4byte)

๐Ÿ’ก ํฌ์ธํ„ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋‹ค๋ฃจ๋Š” ์šฉ๋Ÿ‰์ด ์ž‘์•„ ๋” ๋น ๋ฅธ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋ž˜์„œ ํฌ์ธํ„ฐ๋ฅผ ์“ฐ๋ฉด ๋” ํšจ์œจ์ ์ธ ์ž‘์—…์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋‹ค.


5. ์ด์ค‘ ํฌ์ธํ„ฐ

์ด์ค‘ ์ˆœํ™˜๋ฌธ, ๋‹ค์ฐจ์› ๋ฐฐ์—ด์ด ์žˆ๋“ฏ ํฌ์ธํ„ฐ์—๋„ ์ด์ค‘ ํฌ์ธํ„ฐ๊ฐ€ ์žˆ๋‹ค. ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋‹ค.

1
2
3
int num1 = 0;
int *p = &num1;    // p๋Š” num1์„ ๊ฐ€๋ฆฌํ‚ด
int **pp = &p;     // pp๋Š” p๋ฅผ ๊ฐ€๋ฆฌํ‚ด (์ด์ค‘ ํฌ์ธํ„ฐ)
1
2
3
4
5
6
 num1          p            pp
โ”Œโ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  0  โ”‚โ—„โ”€โ”€โ”€โ”‚ &num1 โ”‚โ—„โ”€โ”€โ”€โ”‚  &p   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
  *p๋กœ 1๋ฒˆ ์ฐธ์กฐ โ†’  num1
  **pp๋กœ 2๋ฒˆ ์ฐธ์กฐ โ†’ p ๊ฑฐ์ณ num1

Desktop View

**pp๋Š” p๋กœ ๊ฐ”๋‹ค๊ฐ€ ๋‹ค์‹œ num1๋กœ ๊ฐ€์•ผ ํ•˜๋‹ˆ ๋‘ ๋ฒˆ ์ฐธ์กฐํ•˜๋ผ๋Š” ๋œป์—์„œ **๋ฅผ ์“ด๋‹ค. (NULL์€ ์•„๋ฌด๊ฒƒ๋„ ์—†๋Š” ๊ฐ’์œผ๋กœ, ๋”ฐ๋กœ ์„ ์–ธ ์—†์ด ์“ธ ์ˆ˜ ์žˆ๋‹ค.)

Desktop View

num1, *p, **pp๊ฐ€ ๋ชจ๋‘ 0์œผ๋กœ ๋™์ผํ•˜๊ฒŒ ์ถœ๋ ฅ๋œ๋‹ค.


6. ์ „๋‹ฌ ๋ฐฉ์‹์— ๋”ฐ๋ฅธ ํ•จ์ˆ˜ ํ˜ธ์ถœ

ํฌ์ธํ„ฐ์˜ ์ง„๊ฐ€๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ์—์„œ ๋“œ๋Ÿฌ๋‚œ๋‹ค.

๋ฐฉ์‹๋„˜๊ธฐ๋Š” ๊ฒƒ์›๋ณธ ๋ณ€ํ™”
Call By Value (๊ฐ’์— ์˜ํ•œ ํ˜ธ์ถœ)๊ฐ’์˜ ๋ณต์‚ฌโŒ ์—†์Œ
Call By Reference (์ฐธ์กฐ์— ์˜ํ•œ ํ˜ธ์ถœ)์ฃผ์†Œ(ํฌ์ธํ„ฐ)โœ… ์žˆ์Œ

Call By Value

1
2
3
4
5
void inc1(int n) { n = n + 1; printf("%d\n", n); }
...
int n = 10;
inc1(n);   // 11 ์ถœ๋ ฅ
inc1(n);   // ๋˜ 11 ์ถœ๋ ฅ (์›๋ณธ n์€ ๊ทธ๋Œ€๋กœ 10)

Desktop View

Desktop View

Desktop View

๋‘ ๋ฒˆ ํ˜ธ์ถœํ•ด๋„ ๋‘˜ ๋‹ค 11์ด๊ณ , main์˜ n์€ ์—ฌ์ „ํžˆ 10์ด๋‹ค. ๊ฐ’๋งŒ ๋ณต์‚ฌํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. main์˜ n๊ณผ inc1์˜ n์€ ์ด๋ฆ„๋งŒ ๊ฐ™์€ ์„œ๋กœ ๋‹ค๋ฅธ ์ง€์—ญ๋ณ€์ˆ˜๋‹ค.

Call By Reference

1
2
3
4
void inc2(int *p) { *p = *p + 1; printf("%d\n", *p); }
...
int n = 10;
inc2(&n);   // n์˜ '์ฃผ์†Œ'๋ฅผ ๋„˜๊น€

Desktop View

Desktop View

Desktop View

์ด๋ฒˆ์—” ํ˜ธ์ถœ ํ›„ main์˜ n ๊ฐ’์ด ์‹ค์ œ๋กœ ๋ฐ”๋€๋‹ค. ๊ฐ’์ด ์•„๋‹ˆ๋ผ n์˜ ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ•ด ์ฐธ์กฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ทธ ์ฃผ์†Œ๋กœ ์ฐพ์•„๊ฐ€ ์›๋ณธ n์„ ์ง์ ‘ ์กฐ์ž‘ํ•œ ๊ฒƒ์ด๋‹ค.


๐Ÿ“ ์ •๋ฆฌ

1
2
3
4
5
6
7
ํฌ์ธํ„ฐ(pointer)
โ”œโ”€ ํ•ต์‹ฌ     ๋ณ€์ˆ˜์— '๊ฐ’'์ด ์•„๋‹ˆ๋ผ '์ฃผ์†Œ'๋ฅผ ๋‹ด๋Š”๋‹ค
โ”œโ”€ ์—ฐ์‚ฐ์ž   & (์ฃผ์†Œ ๋ฐ˜ํ™˜) ยท * (์ฃผ์†Œ๋กœ ๊ฐ€์„œ ๊ฐ’ ์ฝ๊ธฐ/์“ฐ๊ธฐ)
โ”œโ”€ ์—ฐ์‚ฐ     p+1 โ†’ ํƒ€์ž… ํฌ๊ธฐ๋งŒํผ ์ฃผ์†Œ ์ฆ๊ฐ€ (int๋ฉด +4)
โ”œโ”€ ๋ฐฐ์—ด     arr[n] โ‰ก *(arr+n),  arr == &arr[0]
โ”œโ”€ ์ด์ค‘ํฌ์ธํ„ฐ  ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ (**pp)
โ””โ”€ ํ•จ์ˆ˜ํ˜ธ์ถœ  Call By Value(๋ณต์‚ฌ, ์›๋ณธ ์œ ์ง€) vs Reference(์ฃผ์†Œ, ์›๋ณธ ๋ณ€๊ฒฝ)
๊ฐœ๋…ํ•œ ์ค„ ์ •์˜
&๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ฃผ์†Œ ์—ฐ์‚ฐ์ž
*์ฃผ์†Œ๋กœ ์ฐพ์•„๊ฐ€ ๊ฐ’์„ ์ฝ๊ณ  ์“ฐ๋Š” ์ฐธ์กฐ ์—ฐ์‚ฐ์ž
arr[n] โ‰ก *(arr+n)๋ฐฐ์—ด ์ฒจ์ž๋Š” ๊ณง ํฌ์ธํ„ฐ ์—ฐ์‚ฐ
Call By Reference์ฃผ์†Œ๋ฅผ ๋„˜๊ฒจ ์›๋ณธ์„ ์ง์ ‘ ๋ฐ”๊พธ๋Š” ํ˜ธ์ถœ ๋ฐฉ์‹

ํฌ์ธํ„ฐ๋Š” ๊ฒฐ๊ตญ โ€œ์ฃผ์†Œ๋ฅผ ํ†ตํ•ด ์›๋ณธ์— ์ง์ ‘ ์ ‘๊ทผํ•œ๋‹คโ€๋Š” ํ•˜๋‚˜์˜ ๊ฐœ๋…์œผ๋กœ ์ˆ˜๋ ดํ•œ๋‹ค. ์–ด๋ ต๋‹ค๊ณ  ์†Œ๋ฌธ๋‚ฌ์ง€๋งŒ, ์ด ๊ด€์ ์„ ์žก๊ณ  ๋‚˜๋ฉด ๋ฐฐ์—ดยทํ•จ์ˆ˜ยท๊ตฌ์กฐ์ฒด๊ฐ€ ๋ชจ๋‘ ์—ฐ๊ฒฐ๋˜๋Š” ์ •๋ง ์žฌ๋ฏธ์žˆ๋Š” ์˜์—ญ์ด๋‹ค.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.