😎 κ³΅λΆ€ν•˜λŠ” μ§•μ§•μ•ŒνŒŒμΉ΄λŠ” μ²˜μŒμ΄μ§€?

[객체의 μ°Έμ‘°, 볡사 μƒμ„±μž] ν•¨μˆ˜μ˜ 인자 전달 방식 λ³Έλ¬Έ

πŸ‘©‍πŸ’» IoT (Embedded)/C++

[객체의 μ°Έμ‘°, 볡사 μƒμ„±μž] ν•¨μˆ˜μ˜ 인자 전달 방식

μ§•μ§•μ•ŒνŒŒμΉ΄ 2024. 2. 24. 00:09
728x90
λ°˜μ‘ν˜•

<ν™©κΈ°νƒœ λ‹˜μ˜ λͺ…ν’ˆ C++ Programming μ„œμ μ„ μ°Έκ³ ν•΄μ„œ μž‘μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€ :-)>

 

🐍 ν•¨μˆ˜μ˜ 인자 전달 방식
β˜‘οΈ 1) 값에 μ˜ν•œ 호좜 (call by value)
ν˜ΈμΆœν•˜λŠ” μ½”λ“œμ—μ„œ λ„˜κ²¨μ£ΌλŠ” μ‹€μΈμž κ°’이 ν•¨μˆ˜μ˜ λ§€κ°œ λ³€μˆ˜μ— λ³΅μ‚¬λ˜μ–΄ μ „λ‹¬λ˜λŠ” λ°©μ‹

μ‹€μΈμžμ˜ κ°’을 λ³΅μ‚¬ν•˜μ—¬ μ „λ‹¬ν•˜λ―€λ‘œ, ν•¨μˆ˜ λ‚΄μ—μ„œ μ‹€μΈμžλ₯Ό μ†μƒμ‹œν‚¬ μˆ˜ μ—†λŠ” μž₯점이 μžˆλ‹€
맀개 λ³€μˆ˜ a, b κ°€ swap() ν•¨μˆ˜μ˜ μŠ€νƒμ— μƒμ„±λ˜κ³ , m, n κ°’이 a, b에 λ³΅μ‚¬λœλ‹€
a와 b값이 μ„œλ‘œ κ΅ν™˜λ˜κ³ , swap() ν•¨μˆ˜κ°€ μ’…λ£Œν•˜λ©΄ swap() μŠ€νƒκ³Ό ν•¨κ»˜ a, b λ„ μ‚¬λΌμ§€μ§€λ§Œ
main() μŠ€νƒμ— m, n μ€ λ³€ν•¨μ—†μ΄ 2, 9 κ°’을 μœ μ§€ν•œλ‹€

// 값에 μ˜ν•œ 호좜둜 swap ν•¨μˆ˜ 호좜
#include <iostream>
using namespace std;

void swap(int a, int b)
{
    int tmp;

    tmp = a;
    a = b;
    b = tmp;
}

int main()
{
    int m = 2, n = 9;
    swap(m, n);
    cout << m << " " << n;
}

// 2 9

 

β˜‘οΈ 2) μ£Όμ†Œμ— μ˜ν•œ ν˜ΈμΆœ (call by address)
μ£Όμ†Œλ₯Ό μ§μ ‘ ν¬μΈν„° νƒ€μž…μ˜ λ§€κ°œ λ³€μˆ˜μ— μ „λ‹¬λ°›λŠ” λ°©μ‹

ν•¨μˆ˜ ν˜ΈμΆœ μ‹œ λ°°μ—΄μ΄ μ „λ‹¬λ˜λŠ” κ²½μš°, λ°°μ—΄μ˜ μ΄λ¦„이 μ „λ‹¬λ˜λ―€λ‘œ μžμ—°μŠ€λŸ½κ²Œ μ£Όμ†Œμ— μ˜ν•œ ν˜ΈμΆœμ΄ μ΄λ€„진닀
λ°°μ—΄μ˜ μ΄λ¦„은 κ³§ λ°°μ—΄μ˜ μ£Όμ†Œμ΄λ‹€

포인터 λ§€κ°œ λ³€μˆ˜ a, bκ°€ swap() μ˜ μŠ€νƒμ— μƒμ„±λ˜κ³ , m, n μ˜ μ£Όμ†Œκ°€ a, b μ— μ „λ‹¬λ˜μ–΄ ν¬μΈν„° a, b λŠ” m, n μ˜ κ³΅κ°„을 κ°κ° κ°€λ¦¬ν‚¨λ‹€
swap() ν•¨μˆ˜μ— μ˜ν•΄ ν¬μΈν„° a μ™€ b κ°€ κ°€λ¦¬ν‚€λŠ” κ°’이 μ„œλ‘œ κ΅ν™˜λ˜λ©΄, κ·Έ κ²°κ³Ό m κ³Ό n μ˜ κ°’이 κ΅ν™˜λœλ‹€
swap() ν•¨μˆ˜κ°€ μ’…λ£Œν•˜λ©΄ a, b κ°€ μ‚¬λΌμ§€κ³  main() μŠ€νƒμ˜ m, n μ€ μ„œλ‘œ κ΅ν™˜λœ μ±„ λ‚¨μ•„μžˆκ²Œ λœλ‹€

μ‹€μΈμžμ˜ μ£Όμ†Œλ₯Ό λ„˜κ²¨μ£Όμ–΄ μ˜λ„μ μœΌλ‘œ ν•¨μˆ˜ λ‚΄μ—μ„œ μ‹€μΈμžμ˜ κ°’을 λ³€κ²½ν•˜κ³ μž ν•  λ•Œ μ΄μš©λœλ‹€

// μ£Όμ†Œμ— μ˜ν•œ 호좜둜 swap ν•¨μˆ˜ 호좜
#include <iostream>
using namespace std;

void swap(int *a, int *b)
{
    int tmp;

    tmp = *a;
    *a = *b;
    *b = tmp;
}

int main()
{
    int m = 2, n = 9;
    swap(m, n);
    cout << m << " " << n;
}

// 9 2

 

728x90
λ°˜μ‘ν˜•
Comments