Call by Reference

λ§ˆλ™μ°¬Β·2023λ…„ 9μ›” 11일
0

call by value (값에 μ˜ν•œ 호좜)

πŸ’‘λ³€μˆ˜κ°€ 가진 값을 λ³΅μ‚¬ν•˜μ—¬ μ „λ‹¬ν•˜λ―€λ‘œ ν•¨μˆ˜ λ‚΄μ—μ„œ 값을 변경해도 원본 값은 λ³€κ²½λ˜μ§€ μ•ŠλŠ”λ‹€.

  • ν•¨μˆ˜κ°€ 호좜될 λ•Œ λ©”λͺ¨λ¦¬ 곡간 μ•ˆμ—μ„œλŠ” μž„μ‹œμ˜ 곡간이 μƒμ„±λœλ‹€. 그리고 ν•¨μˆ˜κ°€ μ’…λ£Œλ˜λ©΄ 해당곡간은 사라진닀.
  • ν•¨μˆ˜ ν˜ΈμΆœμ‹œ μ „λ‹¬λ˜λŠ” λ³€μˆ˜μ˜ 값을 λ³΅μ‚¬ν•˜μ—¬ ν•¨μˆ˜μ˜ 인자둜 μ „λ‹¬ν•œλ‹€.
  • λ³΅μ‚¬λœ μΈμžλŠ” ν•¨μˆ˜ μ•ˆμ—μ„œ μ§€μ—­μ μœΌλ‘œ μ‚¬μš©ν•˜λŠ” λ³€μˆ˜μ΄λ‹€.
  • JAVA의 경우 ν•¨μˆ˜μ— μ „λ‹¬λ˜λŠ” 인자의 데이터 νƒ€μž…μ— λ”°λΌμ„œ (κΈ°λ³Έμžλ£Œν˜• / μ°Έμ‘°μžλ£Œν˜• ) ν•¨μˆ˜ 호좜 방식이 달라짐
    • κΈ°λ³Έ μžλ£Œν˜• : call by value 둜 λ™μž‘ (int, short, long, float, double, char, boolean)
    • μ°Έμ‘° μžλ£Œν˜• : call by reference 둜 λ™μž‘ (Array, Class Instance)

call by reference (참쑰에 μ˜ν•œ 호좜)

πŸ’‘ν•¨μˆ˜ λ‚΄μ—μ„œ 인자둜 μ „λ‹¬λœ λ³€μˆ˜μ˜ 값을 λ³€κ²½ν•˜λ©΄, ν˜ΈμΆœν•œ μͺ½μ—μ„œλ„ ν•΄λ‹Ή λ³€μˆ˜μ˜ 값이 λ³€κ²½λœλ‹€.

  • ν•¨μˆ˜κ°€ 호좜될 λ•Œ, λ©”λͺ¨λ¦¬ 곡간 μ•ˆμ—μ„œλŠ” ν•¨μˆ˜λ₯Ό μœ„ν•œ λ³„λ„μ˜ μž„μ‹œ 곡간이 μƒμ„±λœλ‹€. (ν•¨μˆ˜ μ’…λ£Œμ‹œ 사라짐)
  • call by reference 참쑰에 μ˜ν•œ ν˜ΈμΆœλ°©μ‹μ€ ν•¨μˆ˜ ν˜ΈμΆœμ‹œ 인자둜 μ „λ‹¬λ˜λŠ” λ³€μˆ˜μ˜ 레퍼런슀λ₯Ό μ „λ‹¬ν•œλ‹€. (ν•΄λ‹Ή λ³€μˆ˜λ₯Ό κ°€λ₯΄ν‚¨λ‹€.)
  • ν•¨μˆ˜ μ•ˆμ—μ„œ 인자의 값이 λ³€κ²½λ˜λ©΄, ν•¨μˆ˜ ν˜ΈμΆœμ‹œμ— 있던 λ³€μˆ˜λ“€λ„ 값이 바뀐닀.
profile
μƒˆλ‚΄κΈ°κ°œλ°œμž μ„±μž₯기둝

0개의 λŒ“κΈ€

κ΄€λ ¨ μ±„μš© 정보