Ⅰ. Call-by-value

 

- 함수를 호출 할 때 단순히 값을 전달하는 형태의 함수호출


< 예제 >


#include <stdio.h>

void change(int n1, int n2){

    int temp= n1;

    n1=n2;

    n2=temp;

    printf("(After) Number 1 : %d, Number 2 : %d \n",n1,n2);

}

int main(void){

    int num1=10;

    int num2=20;

    printf("(Before) Number 1 : %d, Number 2 : %d \n",num1,num2);

    change(num1,num2);

    //printf("Number 1 : %d, Number 2 : %d \n",num1,num2);

    -> 사용시 num1과 num2가 바뀌지 않는다 (위에 함수를 int형으로 바꾼뒤 return n1,n2;)

    return 0;

 

}


< 출력결과 >


(Before) Number 1 : 10, Number 2 : 20 

 

(After) Number 1 : 20, Number 2 : 10



 

Ⅱ.Call-by-reference 


- 모리의 접근에 사용되는 주소 값을 전달하는 형태의 함수 호출 


< 예문 > 


#include <stdio.h>

void change(int *ptr1, int *ptr2){

    int temp = *ptr1;;

    *ptr1 = *ptr2;

    *ptr2 = temp;

}

int main(void){

    int num1=10;

    int num2=20;

    printf("Number 1 : %d, Number 2 : %d \n",num1,num2);

    change(&num1,&num2);

    printf("Number 1 : %d, Number 2 : %d \n",num1,num2);

    return 0;

 

}


< 출력 결과 >


Number 1 : 10, Number 2 : 20 

 

Number 1 : 20, Number 2 : 10 






sourced by "윤성우 열혈 C 프로그래밍 강의" 



'Programming > C' 카테고리의 다른 글

구조체 ( Struct )  (0) 2015.08.27
Stack과 Queue  (0) 2015.08.26
2차원 배열  (0) 2015.08.26
동적 할당  (0) 2015.08.26
[ Project ] Pascal  (0) 2015.08.26