본문 바로가기

Code/C++

[C++] Local & Global Variables/ Pass by reference & value/ Recursion

 

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

 

 

 

 

해당 자료는 경희대학교 소프트웨어융합학과 배성호교수님 수업내용을 참조하였습니다.