Skip to content

Latest commit

ย 

History

History
36 lines (28 loc) ยท 1.5 KB

File metadata and controls

36 lines (28 loc) ยท 1.5 KB

call by value & call by reference

call by value

ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ์ „๋‹ฌ๋˜๋Š” ๋ณ€์ˆ˜ ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ํ•จ์ˆ˜ ์ธ์ž๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์œผ๋กœ,
๋ณต์‚ฌ๋œ ์ธ์ž๋Š” ํž˜์ˆ˜ ์•ˆ์—์„œ ์ง€์—ญ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— local value ์†์„ฑ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ํ•จ์ˆ˜ ์•ˆ์—์„œ ์ธ์ž ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋”๋ผ๋„ ์™ธ๋ถ€ ๋ณ€์ˆ˜ ๊ฐ’์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์›๋ณธ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์—†์ง€๋งŒ ์ธ์ž๋ฅผ ๋„˜๊ฒจ์ค„ ๋•Œ๋งˆ๋‹ค ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•ด์•ผ ํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋” ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

call by reference

ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ์ธ์ž๋กœ ์ „๋‹ฌ๋˜๋Š” ๋ณ€์ˆ˜์˜ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ํ•จ์ˆ˜ ์•ˆ์—์„œ ์ธ์ž ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด argument๋กœ ์ „๋‹ฌ๋œ ๊ฐ์ฒด์˜ ๊ฐ’๋„ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.
๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ํ• ๋‹น ๋ฌธ์ œ๋Š” ํ•ด๊ฒฐ๋˜์—ˆ์ง€๋งŒ ์›๋ณธ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์œ„ํ—˜์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

void func(int *n) {
    *n = 20;
}

void main() {
    int n = 10;
    func(&n);
    printf("%d", n);
}

C์–ธ์–ด๋กœ ๊ตฌํ˜„ํ•œ ์ฝ”๋“œ๋Š” ์œ„์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก Java ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐฉ์‹
์ž๋ฐ”์˜ ๊ฒฝ์šฐ ํ•ญ์ƒ call by value๋กœ ๊ฐ’์„ ๋„˜๊น๋‹ˆ๋‹ค.
C, C++์™€ ๊ฐ™์ด ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๊ฐ’ ์ž์ฒด๋ฅผ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ๋„˜๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.
reference type ์„ ๋„˜๊ธธ ์‹œ ํ•ด๋‹น ๊ฐ์ฒด์˜ ์ฃผ์†Œ๊ฐ’์„ ๋ณต์‚ฌํ•˜์—ฌ ์ด๋ฅผ ๊ฐ€์ง€๊ณ  ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ์›๋ณธ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๊นŒ์ง€๋Š” ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‚˜ ์›๋ณธ ๊ฐ์ฒด ์ž์ฒด๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.