๐Ÿ‘Š CS/ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ก 

[ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ก ] 10. ๋ถ€ ํ”„๋กœ๊ทธ๋žจ

ํ•œ๊ทœ์ง„ 2022. 6. 7. 23:19

10.1 ๊ฐœ์š”

๋ถ€ ํ”„๋กœ๊ทธ๋žจ

  • ์ผ๋ จ์˜ ํ–‰์œ„๋‚˜ ๊ณ„์‚ฐ์„ ์ถ”์ƒํ™”ํ•˜๋Š” ๊ธฐ๋ฒ•์œผ๋กœ ์ œ๊ณต
  • ์‹คํ–‰๊ณผ ๋ถ„๋ฆฌํ•ด์„œ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋Š” ๋ธ”๋ก : ํ˜ธ์ถœ ์š”๊ตฌ
  • ํ•จ์ˆ˜(Function) : ํ•จ์ˆ˜ ์ด๋ฆ„์œผ๋กœ ๊ฐ’์„ ๋ฐ˜ํ™˜
  • ์„œ๋ธŒ๋ฃจํ‹ด(Subroutine), ํ”„๋กœ์‹œ์ €(Procedure) : ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๊ฐ’์„ ๋ฐ˜ํ™˜
  • ๊ฐ ํ”„๋กœ์‹œ์ €๋Š” ๋‹จ์ผ ์ง„์ž…์ ์„ ๊ฐ€์ง
  • Caller๋Š” Callee์˜ ์‹คํ–‰ ๋™์•ˆ ์ค‘๋‹จ๋จ
  • ๋ถ€ ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ ์‹œ, ์ œ์–ด๋Š” ํ˜ธ์ถœ์ž์—๊ฒŒ ๋˜๋Œ์•„๊ฐ

10.2 ๋งค๊ฐœ๋ณ€์ˆ˜ ํ‰๊ฐ€์™€ ์ „๋‹ฌ ๊ธฐ๋ฒ•

์‹ค ๋งค๊ฐœ๋ณ€์ˆ˜

  • ํ˜ธ์ถœ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ ์‹ ๋˜๋Š” ์ด๋ฆ„

ํ˜•์‹ ๋งค๊ฐœ๋ณ€์ˆ˜

  • ๋ถ€ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ๋•Œ, ์‹ค ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ์ด๋ฆ„
  • ์ผ๋ฐ˜์ ์œผ๋กœ ์ง€์—ญ ๋ณ€์ˆ˜ ์—ญํ• 

a. ์ฐธ์กฐ ํ˜ธ์ถœ (call by reference)

  • ์‹ค ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’ ๋Œ€์‹  ์ฃผ์†Œ๋ฅผ ํ˜•์‹ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•
  • caller์— ๋‹ค์‹œ ๋Œ์•„์™€์„œ ๋ณ€ํ•œ ๊ฐ’์„ ๋ฐ”๋กœ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค

b. ๊ฐ’ ํ˜ธ์ถœ (call by value)

  • ํ˜•์‹ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ง€์—ญ๋ณ€์ˆ˜ํ™”
  • ์‹ค ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์„ ๋Œ€์‘ ์ง€์—ญ๋ณ€์ˆ˜๋กœ ๋ณต์‚ฌ
  • ์‹ค ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์ด ๋ถˆ๋ณ€ํ•จ
  • caller๋Š” ์‹ค ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ(๋˜๋Š” ๊ฐ’)์„ ์ „๋‹ฌํ•˜๊ณ , callee๋Š” r-value๋ฅผ ํ˜•์‹ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ธฐ์–ต์žฅ์†Œ์— ๋ณต์‚ฌ
  • ์ดํ›„ ๋‹ค๋ฅธ ์ง€์—ญ๋ณ€์ˆ˜์™€ ๋™์ผํ•˜๊ฒŒ ์ทจ๊ธ‰ํ•œ๋‹ค

c. ๊ฒฐ๊ณผ ํ˜ธ์ถœ (call by result)

  • callee๊ฐ€ ๋ฆฌํ„ด ์ง์ „์— ํ˜•์‹ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋Œ€์‘๋˜๋Š” ์‹ค ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋ณต์‚ฌ ํ›„ ๋ฆฌํ„ด
  • ํ˜•์‹ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ง€์—ญ ๋ณ€์ˆ˜๋กœ ๊ฐ„์ฃผ
  • ๊ฐ’์„ ๋ฐ›์•„์˜ค๋Š”๊ฑด ์•„๋‹˜. ๋ฏธ์ •์˜. (callee์—์„œ ์ •์˜ํ•จ)

d. ๊ฐ’-๊ฒฐ๊ณผ ํ˜ธ์ถœ ๊ธฐ๋ฒ• (call by value-result)

  • callee ์‹คํ–‰ ์‹œ์ž‘์— ๊ฐ’ ํ˜ธ์ถœ ๊ธฐ๋ฒ•(call by value)
  • callee ์‹คํ–‰ ๋์— ๊ฒฐ๊ณผ ํ˜ธ์ถœ ๊ธฐ๋ฒ•(call by result)

e. ์ด๋ฆ„ ํ˜ธ์ถœ ๊ธฐ๋ฒ• (call by name)

  • ํ˜•์‹ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์ด ์‚ฌ์šฉ๋  ๋•Œ๋งˆ๋‹ค ๋Œ€์‘๋˜๋Š” ์‹ค ๋งค๊ฐœ๋ณ€์ˆ˜ ์ž์ฒด๊ฐ€ ์‚ฌ์šฉ๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ
  • ํ•„์š”ํ•œ r-value ๋˜๋Š” l-value๋ฅผ ๋งค๋ฒˆ ๊ณ„์‚ฐํ•œ๋‹ค