[C 기초 - 포인터 (Call by value & Call by reference]

Junyeong Fred Kim·2021년 12월 6일
0

C언어

목록 보기
16/21

Call by value


기본적으로 C언어에서 지원하는 방식이다. 함수에서 값을 복사해서 전달하는 방식으로, 인자로 전달되는 변수를 함수의 매개변수에 복사한다. 원본 값을 바꿀 필요가 없는 경우에는 call by value 방식을 이용하면 된다.

코드

#include <stdio.h>

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

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;
}

출력

swap 전 : 10 20
swap 후 : 10 20

출력 설명

위 코드를 실행해보면 call by value 형식으로는 swap을 진행해도 매개변수가 바뀌는 것일 뿐 원래 변수인 a, b의 값은 변하지 않는다.

Call by reference


함수에서 값을 전달하는 대신 주소값을 전달하는 방식을 call by reference라고 한다.

코드

#include <stdio.h>

void swap(int *a, int *b)
{
	int temp;

	temp = *a;
	*a = *b;
	*b = temp;
}

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;
}

출력

swap 전 : 10 20
swap 후 : 20 10

출력 설명

그냥 변수를 넘겨줄 때와는

profile
기억보다 기록

0개의 댓글