C++

[C++] ์ธ์ˆ˜ ์ „๋‹ฌ ๋ฐฉ์‹ : call-by-value์™€ call-by-reference

carsumin 2024. 10. 14. 22:10
call-by-value
  • ์‹ค ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ํ˜•์‹ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋ณต์‚ฌํ•˜๋Š” ๋ฐฉ์‹
float FahrToC(float fahr){
    fahr -= 32; // ํ˜•์‹ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ˆ˜์ •
    return fahr * 5 / 9;
}

int main(){
    float fTemp, cTemp;
    cout << "ํ™”์”จ์˜จ๋„ : ";
    cin >> fTemp;
    cTemp = FahrToC(fTemp); // ์›๋ณธ์€ ๋ณ€ํ™” ์—†์Œ
    cout << "์„ญ์”จ์˜จ๋„ : " << cTemp << endl;
    return 0;
}

 

  • ์žฅ์  : ์‹ค ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ํ˜•์‹ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋ณ„๊ฐœ์˜ ๋ฐ์ดํ„ฐ์ด๋ฏ€๋กœ ๋ถ€์ž‘์šฉ ๋ฐœ์ƒ x
  • ๋‹จ์  : ๊ตฌ์กฐ์ฒด์™€ ๊ฐ™์ด ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋กœ ๊ตฌ์„ฑ๋œ ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ๊ฒฝ์šฐ ๋ณต์‚ฌ๋Ÿ‰์ด ๋งŽ์•„์ง

 

call-by-reference
  • ์‹ค ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ฐธ์กฐ๋ฅผ ํ˜•์‹ ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ „๋‹ฌ
  1. ํ•จ์ˆ˜์—์„œ ์ฒ˜๋ฆฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฐ›์•„ ์˜ค๋ ค๋Š” ๊ฒฝ์šฐ
  2. ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋กœ ๊ตฌ์„ฑ๋˜๋Š” ๊ตฌ์กฐ์ฒด๋‚˜ ๊ฐ์ฒด์™€ ๊ฐ™์€ ์ธ์ˆ˜๋ฅผ ํ•จ์ˆ˜์— ํšจ์œจ์ ์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ฒฝ์šฐ
// call-by-reference ์˜ˆ์‹œ : swap ์•Œ๊ณ ๋ฆฌ์ฆ˜

#include <iostream>
using namespace std;
void SwapValues(int& x, int& y);

int main(){
    int a, b;
    
    cout << "๋‘ ์ˆ˜๋ฅผ ์ž…๋ ฅ : ";
    cin >> a >> b;
    if (a<b) SwapValues(a, b); //a์— ํฐ ๊ฐ’์„ ๋„ฃ์Œ
    cout << "ํฐ ์ˆ˜ = " << a << "์ž‘์€ ์ˆ˜ = " << b << endl;
    return 0;
}

void SwapValues(int& x, int& y)
{
    int temp = x;
    x = y;
    y = temp;
}