Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[3049] Re:call by value 와 call by reference 의 차이점이 무엇인가요??
강재호.만해 [greenuri] 3028 읽음    2003-10-21 13:58
pureness 님이 쓰신 글 :
: call by value 와 call by reference 를 비교해서 설명좀 해주세요~~
:
: 왠만하면 자세하게 좀.. ㅡㅡ;;

안녕하세요 만해입니다.

오랜만에 답변을 올리는군요 ㅋ ㅋ ㅋ

Call By Value 와 Call ByReference 의 차이는

호출된 함수에서의 그 변수의 값을 변경 시켰을때

그 변경된 값이 호출을 시킨 함수로 복귀 했을때 유지 되느냐 안되느냐로

차이가 난다고 할수 있습니다.

void CallByValue ( int a )
{
  a = 10 ;
}

void CallByReference ( int * a )
{
  *a = 10;
}

void main ( void )
{
  int i = 5;
  printf("Before Call By Value is %d",i);
  CallByValue(i);
  printf("After Call By Value is %d",i);

  printf("Before Call By Reference is %d",i);
  CallByReference(&i);
  printf("After Call By Reference is %d",i);
}

이 소스의 결과는 이렇게 나옵니다.

Before Call By Value is 5
After Call By Value is 5
Before Call By Reference is 5
After Call By Reference is 10

Call ByValue 의 경우 그 함수 내부적으로 a라는 변수가 생성되고

그 변수가 생성된후 10 이란 값을 할당한후에

함수가 수행이 완료 되면 a 라는 변수는 삭제 됩니다.

이것은 main에서 전달해준 i라는 변수와 CallByValue에서 생성된 a 라는 변수가

전혀 무관 하다는 것이고요

CallByReference 는 main함수에서 정의된 i 라는 변수의 주소값을 넘기고

CallByReference 함수에서 a는 main 함수의 i 변수의 메모리 주소를 받게 됩니다.

이 상태에서 *a = 10; <-- 이 명령어는 a라는 변구가 가르키는 주소에 10이란 값을

넣기 때문에 main에서 정의된 i라는 변수에 값이 전달됩니다.

흑 수업 들어 가야 되네요 나중에 보충 답변 올려 드리겠습니다.

그럼 이만~

+ -

관련 글 리스트
3048 call by value 와 call by reference 의 차이점이 무엇인가요?? pureness 1468 2003/10/21
3049     Re:call by value 와 call by reference 의 차이점이 무엇인가요?? 강재호.만해 3028 2003/10/21
4280         Re:Re:call by value 와 call by reference 의 차이점이 무엇인가요?? 이도일 1891 2003/10/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.