Java와 C, C++에서의 Call by value, Call by reference 구현
- 최초 등록일
- 2014.12.10
- 최종 저작일
- 2014.11
- 11페이지/ 한컴오피스
- 가격 1,000원
소개글
자바와 C, C++에서 값에 의한 전달, 주소(참조)에 의한 전달을 구현하는 자료입니다.
목차
Ⅰ. Call by value 설명
Ⅱ. Call by reference 설명
Ⅲ. 매개변수 설명
1. java 코드
1) 코드설명
2) 실행결과
2. C 코드
1) 코드설명
2) 실행결과
3. C++ 코드
1) 코드설명
2) 실행결과
본문내용
Call by Value(addValue & subValue)와 Call by Reference(addReference & subReference) 구현
*Call by Value : 값을 인자(매개변수)로 전달하는 함수의 호출방식
*Call by Reference : 주소 값을 인자(매개변수)로 전달하는 함수의 호출방식
주소 값을 전달받아서, 함수 외부에 선언된 변수에 접근하는 형태의 함수호출
(즉, 주소 값이 외부 변수의 참조도구로 사용되는 함수의 호출이다.
주소 값이 전달된 사실이 중요한 게 아니라, 주소 값이 참조의 도구로 사용되었다는 사실이 중요함!)
*매개변수 : 함수가 호출되어야 초기화가 진행되는 변수
<중 략>
구조체 형태와 멤버값들을 복사하여 저장받게되고, 메소드 안에서 작업(as.amount += as.add 및 출력)을 수행이 가능해졌다. 그 후 addValue 메소드의 작업이 끝남과 동시에 as는 사라지고 mine[i]에는 아무런 영향을 주지 않는다. (Call by Value)
addReference(&mine[i])의 경우는 메소드를 호출할 때 mine[i]의 값들이 전달되지 않고, mine[i]의 메모리 주소값이 전해진다. addReference 메소드의 형식매개변수인 *as는 mine[i]의 주소값을 가지게되고, 따라서 역참조를 통해 mine[i]을 간접적으로 참조가 가능하고, 값 변경을 시킬 수 있다. addReference 메소드의 작업이 끝남과 동시에 *as는 사라지지만, mine[i]에 그 작업으로 인해 값들이 변하게 된다. (Call by Reference)
참고 자료
없음