ํจ์ ํธ์ถ ์ ์ ๋ฌ๋๋ ๋ณ์ ๊ฐ์ ๋ณต์ฌํด์ ํจ์ ์ธ์๋ก ์ ๋ฌํ๋ ๊ฒ์ผ๋ก,
๋ณต์ฌ๋ ์ธ์๋ ํ์ ์์์ ์ง์ญ์ ์ผ๋ก ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ local value ์์ฑ์ ๊ฐ์ง๋๋ค.
๋ฐ๋ผ์ ํจ์ ์์์ ์ธ์ ๊ฐ์ด ๋ณ๊ฒฝ๋๋๋ผ๋ ์ธ๋ถ ๋ณ์ ๊ฐ์ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค.
์๋ณธ์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๊ฐ๋ฅ์ฑ์ด ์์ง๋ง ์ธ์๋ฅผ ๋๊ฒจ์ค ๋๋ง๋ค ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํด์ผ ํด์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
ํจ์ ํธ์ถ ์ ์ธ์๋ก ์ ๋ฌ๋๋ ๋ณ์์ ๋ ํผ๋ฐ์ค๋ฅผ ์ ๋ฌํฉ๋๋ค.
๋ฐ๋ผ์ ํจ์ ์์์ ์ธ์ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด 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 ์ ๋๊ธธ ์ ํด๋น ๊ฐ์ฒด์ ์ฃผ์๊ฐ์ ๋ณต์ฌํ์ฌ ์ด๋ฅผ ๊ฐ์ง๊ณ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
๋ฐ๋ผ์ ์๋ณธ ๊ฐ์ฒด์ ํ๋กํผํฐ๊น์ง๋ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ ์๋ณธ ๊ฐ์ฒด ์์ฒด๋ฅผ ๋ณ๊ฒฝํ ์๋ ์์ต๋๋ค.