Local Variables // 함수안에서만 존재, 함수가 종료되면 사라짐
메인함수, 종속함수 는 전혀 다른함수이다
a 값은 11 but x 값은 10
이름은 같지만 서로 다른 램 공간에 저장된값이다
서로 다른 함수안에 속해있는 로컬 -> 서로에게 영향을 미치지않는다
함수 안에서 시작하였다가 함수가 끝나면 쉽게 사라지는 운명
#include <iostream>
using namespace std;
void increase(int x) { // 출력타입이 없다
x++; // 선언 및 구현을 동시에함, 1씩 증가한다
}
int main() {
int x = 10; //변수 최초 할당 , 초기화
cout << x << endl;
increase(x);
cout << x << endl;
return 0;
}
global Variables
: 모든 곳에서 통용된다 // 함수 외부에 선언되어 모든 함수에서 공통적으로 사용가능
메모리 엄청 잡아먹는다 모든곳에 영향주기에 처음에는 안쓰고 프로그래밍 추천한다
우선순위 : local var >>> global var
#include <iostream>
using namespace std;
// 함수 안에서만 존재, 함수가 종료되면 사라짐
int gVar;
void print() {
gVar = 1000;
}
int main() {
gVar = 10;
cout << gVar << endl;
print();
cout << gVar << endl;
}
// pass by value
: 함수의 입력 인자에 복사를 통해 전달, 독립적인 저장
//&추가시 pass by reference
: 함수 입력인자를 reference value로 전달, 같은 메모리공간을 차지
함수는 하나의 값을 반환이 원칙
하지만 여러값을 반환하고 싶을 떄 reference로 출력가능
#include <iostream>
using namespace std;
int main() {
int x = 10;
int y = x; // 별개의 공간에 저장된 x,y를 별개의 공간에 저장
cout << x << '\t' << y << endl;
x = 1000;
cout << x << '\t' << y << endl;
return 0;
}
>>
10 10
1000 10
#include <iostream>
using namespace std;
int main() {
int x = 10;
int& y = x; // 별개의 공간에 저장된 x,y를 같은 공간에 저장되게 만듬
cout << x << '\t' << y << endl;
x = 1000;
cout << x << '\t' << y << endl;
return 0;
}
>>
10 10
1000 1000
#include <iostream>
using namespace std;
//int a - int& a
void swap(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
int main() {
int x = 10, y = 1000;
cout << x << '\t' << y << '\n'; // 문자 문자열 , 탭 줄바꿈
swap(x, y);
cout << x << '\t' << y << endl;
return 0;
}
>>
10 1000
1000 10
재귀함수 Recursion
: 자신의 함수를 안고있을 때 -> 끊없는 호출 때문에 많은 매모리를 차지하므로 자주사용 X
n! = n*n-1
f(n)= n*f(n-1)
#include <iostream>
using namespace std;
int factorial(int n) {
//termination condition
if (n == 0)
return 1;
//base condition
return n * factorial(n - 1);
}
int main() {
int x = 5;
cout << factorial(x) << endl;
}
>>
120
해당 자료는 경희대학교 소프트웨어융합학과 배성호교수님 수업내용을 참조하였습니다.
'Code > C++' 카테고리의 다른 글
[C++] Vector / (0) | 2019.10.09 |
---|---|
[C++] & operator / pointer / pass by address/ function pointer (0) | 2019.10.09 |
[C++] Function/ cmath library/ Default argument (0) | 2019.09.28 |
[C++] Input Stream/ Arithmetic Operators (0) | 2019.09.28 |
[C++] Variables, Floating-Point, Character (0) | 2019.09.28 |