[C] Call by value & Call by reference

dong_min_god·2023년 1월 13일
1

C

목록 보기
1/1
post-thumbnail

함수로 값을 넘겨주는 방식에는 크게 두가지가 있습니다.

  • Call by value(값에 의한 호출)
  • Call by reference(참조에 의한 호출)

Call by value

  • 함수에서 값을 복사해서 전달하는 방식으로 인자로 전달되는 변수를 함수의 매개변수에 복사합니다.
  • 복사된 값은 인자로 전달한 변수와 별개의 변수가 되어 매개변수 값을 변경해도 원래의 변수에 영향을 미치지 않습니다.
#include <stdio>

void swap(int a, int b)
{
	int tmp;
    
    tmp = a;
    a = b;
    b = tmp;
}

int main()
{
	int a,b;
    a=10; b=20;
    
    printf("swap 전 : %d %d\n", a, b);
    swap(a,b);
    printf("swap 후 : %d %d\n", a, b);
    
    return 0;
}

** result **
swap 전 : 10 20
swap 후 : 10 20

Call by reference

  • 함수에서 값 대신 주소값을 전달하는 방식
  • 주소값 참조를 통해 함수 내 매개변수 값 변경을 통해 원래의 변수 값도 변경됩니다.
#include <stdio>

void swap(int *a, int *b)
{
	int tmp;
    
    tmp = *a;
    *a = *b;
    *b = tmp;
}

int main()
{
	int a,b;
    a=10; b=20;
    
    printf("swap 전 : %d %d\n", a, b);
    swap(a,b);
    printf("swap 후 : %d %d\n", a, b);
    
    return 0;
}

** result **
swap 전 : 10 20
swap 후 : 20 10
profile
코린이 탈출 기원

0개의 댓글