본문 바로가기
Programming/C, C++

C++ Call By Value, Call By Reference, Call By Address

by Dev_카페인 2022. 12. 7.
반응형

[C/C++] Call By Value, Call By Reference, Call By Address

  • Call By Value : 값만 전달하는 함수 호출 방법
  • Call By Reference : 참조값을 전달하는 함수 호출 방법
  • Call By Address : 주소 값을 전달하는 함수 호출 방법
#include <stdio.h>

// Call By Value
void AddValue(int a, int b)
{
	a = a + b;
	printf("Call By Value A : %d \n", a);
}
// Call By Reference
void AddReference(int &a, int &b)
{
	a = a + b;
	printf("Call By Reference A : %d \n", a);
}
// Call By Address
void AddAddress(int* a, int* b)
{
	*a = *a + *b;
	printf("Call By Reference A : %d \n", *a);
}

int main()
{
	int x1 = 5, x2 = 8;
	int y1 = 5, y2 = 8;
	int z1 = 5, z2 = 8;

	AddValue(x1, x2);
	AddReference(y1, y2);
	AddAddress(&z1, &z2);
	
	printf("\n");
	printf("Call By Value x1 : %d \n", x1);
	printf("Call By Reference y1 : %d \n", y1);
	printf("Call By Address z1 : %d \n", z1);

	return 0;
}

x1은 AddValue를 호출하였음에도 불구하고 값이 변하지 않음

y1은 AddReference에 참조 값을 넘겨줌으로 실제 값이 변함

z1은 AddReference에 주소 값을 넘겨줌으로 실제 값이 변함

 

 

 

 

 

 

반응형