작동 범위에 따른 변수 구분
[Local Variable = 지역변수]
- 하나의 {} 안에서 작동하는 변수
- 일반적으로 하나의 함수 안에 있으면서 해당 함수에서만 작동함
- 같은 이름을 갖는 변수를 서로 다른 함수에서 사용할 수 있음 => 같은 이름이라고 해도 다른 memory사용
[Global Variable = 광역변수]
- 전체 program에서 계속 작동하는 변수
- 함수 내에 정의하는 것이 아님
- 같은 이름을 갖는 변수를 다시 만들 수 없음
#include <iostream>
using namespace std;
int x1 = 10; // x1은 전역변수
int makedouble (int param) {
int x2; // x2는 지역변수
cout << "03 : " << x2 << endl;
x2 = param;
cout << "04 : " << x2 << endl;
return param*2;
}
int main () {
cout << "01 : " << x1 << endl;
x1 = makedouble (x1);
cout << "02 : " << x1 << endl;
return 0;
}
재귀함수 (Function calls itself)
- return 값에 함수 자신을 포함하고 있는 것을 의미
// 재귀 함수 예시 코드
#include <iostream>
using namespace std;
int factorial (int n) {
if (n==0)
return 1;
else
return n*factorial(n-1); // factorial 함수의 return 값에 factorial 함수 본인이 포함
}
int main () {
cout << " 0! = " << factorial(0) << endl;
cout << " 1! = " << factorial(1) << endl;
cout << " 6! = " << factorial(6) << endl;
cout << " 10! = " << factorial(10) << endl;
}
Reference Variable
#include <iostream>
using namespace std;
int main()
{
int value = 5;
int& ref = value; // r은 reference variable
value = 6;
ref = 7; // value = 7
cout << value; // prints 7
++ref;
cout << value; // prints 8
return 0;
}
- reference variable은 다른 어떤 변수의 별명
- 위의 코드에서 value와 ref는 동의어
// reference variable을 이용해서 변수 swap함수 짜기
#include <iostream>
using namespace std;
int swap (int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
int main() {
int var1 = 5, var2 = 9;
swap(var1, var2); // var1 = 9, var2 = 5
}