블로그

Call by value(address), reference 차이

게시 1분

우선 Call by address 는 Call by value의 일종이다.
하지만 특별히 call by reference와 비슷한 기능을 하기에 address로 네이밍 해준것이다.

C언어에서는 Call by reference를 지원하지 않는다.
하지만 분명히 Call by reference를 지원하는것처럼 보인다.
정확한 차이점을 짚어보자.

// C++ 코드 -> Call by Reference void f(int& y) { y++; } int main(void) { int x = 10; f(x); printf("%d\n", x); return 0; }
// C 코드 -> Call by Value(address) void f(int* y) { (*y)++; } int main(void) { int x = 10; f(&x); printf("%d\n", x); return 0; }

위 코드인 Call by reference에서는 함수에 인자로 x를 전달하고 있고
아래 코드인 Call by value에서는 함수에 인자로 &x 즉 x의 주소 값(Value)을 전달하고 있다

말 그대로 우리는 x 변수 자체를 통해서 매개변수에 참조를 전달할 수 있도록 하는걸 Call by reference라 부르기로 한것이고,
아래는 0x9999와 같은 주소 값을 전달한거다. 값 자체를 전달했으므로 Call by value로 봐야한다.

댓글

댓글을 남기면 닉네임(또는 GitHub 계정 정보)이 저장됩니다. 개인정보처리방침

GitHub