본문 바로가기
c++

Call by value Call by reference Call by address 정리c++

by O_x 2022. 5. 22.

call by value : 값에 의한 전달

call by reference : 참조에 의한 전달

call by address : 주소에 의한 전달

 

Call by value : 값에 의한 전달

arg * arg  를 실행한뒤 num의 값은 100이 되었다 하지만 

main() 함수에서의 num의 값은 그대로 10이다. 

 

그 이유는 주소를 확인해 보면 알 수 있다. 

 

서로 공유하는 주소 값이 다른 것 을 확인 할 수 있다. 

이러한 경우를 값복사 Call By Value 라고 한다.

말 그대로 인자(num)의 값이 매개변수(Func)에 복사 된것을 말한다. 

 

Call By Reference 참조에 의한 전달

Call By Reference 참조에 의한 전달

위에 빨간줄이 있는 곳을 보면 인자값에 &앰퍼샌드가 있는 것을 볼수 있다.

&의 의미는 변수의 주소를 불러온다는 의미다.

그렇기에 주소가 참조되어 main()과 Fucn()에서 받는 인자들의 주소와 결과 값을 공유한다.

 

함수가 호출되면 매개변수로 선언된 info는 Test_info 가 할당된 메모리를 공유하게 됩니다. 

때문에 값을 바꾸면 num의 값도 바뀌고 주소를 출력하면 같은 주소가 나옵니다. 

 

 

Call by address : 주소에 의한 전달

함수는 인자로 포인터를 받는데 , 이 경우 함수 호출하는 곳에서는 주소를 명시적으로 전달해야 합니다.

함수는 인자로 주소를 받는데, 이 경우 함수 호출하는 곳에서는 값을 그대로 넘깁니다.

하지만 받는 측에서는 포인터로 받습니다.

 

변수의 주소를 명시적으로 알려주면 포인터의 크기 4바이트로 인자가 넘어가지만,

Func2() 처럼 넘오는 값을 포인터로 받으면 자료형만큼의 바이트만 사용됩니다.

 

 

 

 

 

 

https://rehtorb-algorithm.tistory.com/11,초보자를 위한 C++ 200제 를 참고하여 작성됨

개념에 대한 오류나 오타 같은 것을 댓글로 알려주시면 수정하고 고치도록 하겠습니다

 

운영중인 카톡방입니다.

https://open.kakao.com/o/gsMhUFie

 

C/C++/C# 언리얼/유니티 /질문

#C++#C#언리얼#게임개발#질문#개발#자료구조#백준#프로그래머스#c#유니티#unity#enreal

open.kakao.com

 

'c++' 카테고리의 다른 글

list vs vector  (0) 2022.06.06
list, forward_list  (0) 2022.06.03
vector 와 array c++  (0) 2022.06.02
vector란 무엇 일까? c++  (0) 2022.06.01
STL컨테이너 란 C++  (0) 2022.05.21

댓글