Call by value 와 Call by reference 는 무슨 차이인가요?
Call by value 와 Call by reference 는 무슨 차이인가요?
C언어로 치면 주소값을 참조하는 &val 와 그냥 해당 값을 참조하는 val 의 차이 정도인가요??
흔히들 무슨 언어는 Call by value 이다!
무슨 언어는 Call by reference 이다! 이러는데
C는 그러면 둘중에 뭐라고 보아야 맞는건가요??
55글자 더 채워주세요.
2개의 답변이 있어요!
call by value 는 값의 복사로 가장 일반적인 함수호출방법이며,
call by reference는 함수 호출시 변수의 주소를 전달하며 인자로 전달된 주소가 가리키는 변수 값의 조작을 함수 내에서 가능하게 하는 호출방식입니다.
c언어는 두가지 모두 호출가능하나 굳이 구분을 하자면 call by reference 방식을 지원하는 언어라고 생각하시면될것같습니다.
- void test(int &a) { a = 0; } int main() { int a; test(a); return a; }
C++의 이것이 call by reference입니다. 함수에 인자로 넘긴 값을 바꾸면 원래 값이 바뀌죠.
비슷하게 C에서는 포인터를 전달할 수 있습니다.
void test(int *a) { *a = 0; } int main() { int a; test(&a); return a; }그런데 이건 call by reference라기보다는 포인터를 call by value로 넘겼다고 합니다.
C언어는 call by reference를 언어 차원에서 제공하지 않기 때문에
포인터를 call by value로 넘기는 걸 call by reference라고 부르기도 합니다.