2018년 3월 20일 화요일

포인터 기초 강좌 4 - Call by Value, Call by Reference

2013. 4. 29. 16:44

다음의 내용은 Rushmo에서 포인터 교육 자료로 만든 내용입니다.
가져 가실때는 이 정보 남겨 주시는것이 예의 겠지요 ^^




Call by Value      : 값의 복사에 의한 함수 호출
Call by Reference : 주소값을(포인터파라메터로 하는 함수의 호출

아래 코드를 보자. ( 여기까지 이해가 되면 pointer 90%는 이해 했다고 보면 됨 ^^ )

int CallByValue(int a, int b)          // 스택 메모리에서 복사가 이루어진다.
{
    a = a + b ;
    return a;
}

int CallByReference(int * a, int * b) // 스택 메모리에서 참조가 이루어 진다.
{
    *a = *a + *b                      // 실제 데이터를 변경
    return *a;
}

void PointerStudy_5()
{
    int A=1, B=2;

    printf("return = %d \r\n",CallByValue(A,B));
    printf("A=%d, B=%d \r\n", A, B );
    printf("return = %d \r\n",CallByReference(&A,&B));
    printf("A=%d, B=%d \r\n", A, B );
}

위의 내용을 보면
일반적 함수의 호출인 CallByValue()와 달리 CallByReference()에서는 파라메터를 포인터로 받게 된다.



또한 함수의 호출 시에 & 를 이용해서 주소를 넘겨 주게 된다

댓글 없음:

댓글 쓰기