Call by value
- κ°μ μν νΈμΆ
- ν¨μ νΈμΆ μ μΈμλ‘ λ³μμ λ³΅μ¬ κ°μ μ λ¬νλ€. μ΄λ 볡μ¬λ μΈμλ ν¨μ μμμ μ§μμ μΌλ‘ μ¬μ©λκΈ° λλ¬Έμ local valueμ μμ±μ κ°μ§λ€. λ°λΌμ ν¨μ μμμ μΈμ κ°μ΄ λ³κ²½λλλΌλ μκ·λ¨ΌνΈ(argument)λ λ³κ²½λμ§ μλλ€.
- λ©λͺ¨λ¦¬ 곡κ°μμλ λ³λμ μμ 곡κ°μ μμ±λλ―λ‘ ν¨μ μ’ λ£ μ μ¬λΌμ§λ€.
Call by reference
- μ°Έμ‘°μ μν νΈμΆ
- ν¨μ νΈμΆ μ μΈμλ‘ λ³μμ λ νΌλ°μ€λ₯Ό μ λ¬νλ€. λ°λΌμ ν¨μ μμμ μΈμ κ°μ΄ λ³κ²½λλ©΄ μκ·λ¨ΌνΈλ‘ μ λ¬λ κ°μ²΄μ κ°λ λ³κ²½λλ€.
- μ μΈκ³Ό λμμ μ΄κΈ°νν΄μΌ νκ³ μ΄κΈ°νλ νμλ λ€λ₯Έ λ³μλ₯Ό μ°Έμ‘°ν μ μλ€.
#include <iostream>
using namespace std;
void func_by_value(int a, int b)
{
int temp = a;
a = b;
b = temp;
}
void func_by_ref(int& a, int& b)
{
int temp = a;
a = b;
b = temp;
}
int main(void)
{
int a = 10, b = 20;
func_by_value(a, b);
cout << a << ' ' << b << endl;
func_by_ref(a, b);
cout << a << ' ' << b << endl;
}
// μΆλ ₯
// 10 20
// 20 10