본문 바로가기
언어/C

Call by value, Call by reference

by Sangchuuu 2023. 4. 28.

call by value(값에 의한 호출)

  • 함수를 호출 하면서 값을 복사하여 전달하는 방식을 값에 의한 호출(Call by value)

main() 함수에서 swap() 함수로 변수를 전달하면서
변수를 직접 참조하는게 아니라 변수의 값이 복사되기 때문에
swap() 함수안에서 a, b를 바꿔도 복사본이 바뀌고,
main() 함수 안의 변수 값은 바뀌지 않음.


 

Call by Reference (주소에 의한 호출)

  • 함수에서 값의 복사가 아닌 주소를 다른 함수에 전달하는 방식이 주소에 의한 호출 (Call by reference) 

main() 함수에서 swap() 함수로 a, b의 주소값을 전달한다.
swap()함수의 매개변수는 주소값을 저장할 수 있는 포인터여야만 한다.
swap()함수안에 포인터 변수는 main()함수 안의 변수를 각각 가리킨다 (참조한다).
포인터 변수가 main() 함수에 변수를 역참조하여 값을 가져와서 사용하거나 변경할 수 있게 된다.
swap() 함수에서 *a는 main()함수의 변수 a고, *b는 main 함수의 b를 의미한다.


 

'언어 > C' 카테고리의 다른 글

이중포인터  (0) 2023.04.28