반응형
#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 함수 안에서 무슨 짓을 하더라도 밖으로 영향을 줄 수 없습니다.
값에 의한 전달을 할 때는 외부로 영향을 끼치지 않으며 깔끔하게 쌓여있다는 것을 알 수 있습니다.
반응형
'IT 프로그래밍 > C++' 카테고리의 다른 글
[C++]클래스와 객체 (0) | 2024.04.06 |
---|---|
[C++] Inline 함수 , 함수 오버로딩, typedef (0) | 2024.04.03 |
참조에 의한 호출 c++ (0) | 2024.04.01 |
[따배시 6.20~21] array 소개, vector 소개 (0) | 2024.03.30 |
[따배시 6 .19] 다중 포인터와 동적 다차원 배열 (0) | 2024.03.30 |