IT 프로그래밍/C++

[따배시 7.1 ~ 2 ] 매개변수와 실인자의 구분, 값에 의한 전달

기술1 2024. 4. 2. 19:45
반응형
#include <iostream>

using namespace std;

int foo(int x, int y);

int foo(int x, int y)
{
	return x + y;
}

int main()
{
	int x = 1, y = 2;

	foo(6, 7);
	foo(x, y + 1);
}

foo(6,7) 이렇게 사용할 수도 있으며 이는 argument라고 부르며 실인자라고 부르기도 합니다. (actual parameters)

 

이렇게 x라는 변수를 직접 넣으 수도 있습니다. x=1이라는 값을 받아서 매개변수 x로 전달이 됩니다. 항상 x에 있는 값만 여기로 전달이 되는 것은 아닙니다. y+1에서는 2 에서 1을 더하면 3이듯이 3이라는 값이 argument고 이 argument가 y parameter로 전달이 되는 것입니다. 

 

값에 의한 인수 전달


예제

#include <iostream>

using namespace std;

void doSomething(int y)
{
	cout << "In func " << y << " " << &y << endl;
}

int main()
{
	doSomething(5);

	int x = 6;

	cout << "In main " << x << " " << &x << endl;
}

doSomething(5)를 해놓으면 값이 5가 전달이 되는 것인데요. 밑에 int x  = 6;이 사용을 할 때 값에 의한 전달에서는 doSomething(x)를 넣어주고 있지만 실제로 전달되는 것은 x 변수가 아닌 6이라는 값만 전달이 됩니다. 6이라는 값이 argument로서 parameter로 전달이 되는 것입니다. 

 

두 개를 비교해보면 주소가 다르다는 것을 알 수 있습니다. x + 1 같은 경우는 7이라는 값을 전달해주는 것입니다. 그러면 7이라는 숫자가 y변수가 선언이 되면서 초기화가 되는 과정을 거칩니다. y하고 x하고 주소가 다르기 때문에 do somthing 함수 안에서 무슨 짓을 하더라도 밖으로 영향을 줄 수 없습니다. 

 

값에 의한 전달을 할 때는 외부로 영향을 끼치지 않으며 깔끔하게 쌓여있다는 것을 알 수 있습니다.

 

 

반응형