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 |
댓글