728x90
변수의 범위
변수는 선언되는 위치에 따라서 '전역변수' 와 '지역변수'로 나뉜다.
- 메모리상에 존재하는 기간
- 변수에 접근할 수 있는 범위
지역변수
'지역'이란 중괄호에 의해 형성되는 영역을 뜻한다. 중괄호 내에 선언되는 변수는 모두 지역변수이다.
- 초기화하지 않으면 불필요한 값을 갖는다.
- 함수를 호출할 때마다 변수는 초기화된다.
- 지역변수는 해당 지역을 벗어나면 자동으로 소멸된다.
- 지역변수는 선언된 지역 내에서만 유효하므로 선언된 지역이 다르면 이름이 같아도 된다.
지역변수는 해당 선언문이 실행될 때 메모리 공간에 할당되었다가. 선언문이 존재하는 함수가 반환을 하면 메모리 공간에서 소멸된다.
매개변수
함수를 정의할 때 선언하는 매개변수도 지역변수의 일종이다.
- 선언된 함수 내에서만 접근 가능하다.
- 선언된 함수가 반환되면, 지역변수와 마찬가지로 소멸이 된다.
전역변수
전역변수는 함수 밖에서 선언한 변수이다.
- 전역변수의 유효범위는 선언된 위치부터 프로그램 끝까지이다.
- 전역변수는 초기화하지 않아도 자동으로 0으로 초기화된다.
- 프로그램의 시작과 동시에 메모리 공간에 할당되어 종료 시까지 존재한다.
- 프로그램 전체 영역 어디에서든 접근이 가능하다.
- 전역변수와 동일한 이름의 지역변수가 선언되면 해당 블록 내에서는 전역변수가 가려지고,
지역변수로의 접근이 이루어진다.
정적변수(static)
지역변수에 static 을 붙이면 선언된 함수 내에서만 접근이 가능하다.
한 번만 초기화되고 프로그램 종료시까지 메모리 공간에 존재한다.
void Simple()
{
static int num1 = 0;
int num2 = 0;
num1 ++; num2++;
cout << "static : " << num1 << "local : " << num2 << endl;
}
int main()
{
int i;
for( i = 0; i < 3; i++ )
simple();
return 0;
}
result :
static : 1 local : 1
static : 2 local : 1
static : 3 local : 1
재귀함수
함수 내에서 자기 자신을 다시 호출하는 함수
void Recursive(int num)
{
if (num <=0)
return;
cout << “Recursive call : ” << num << endl;
Recursive(num-1);
}
int main()
{
Recursive(3);
return 0;
}
재귀함수의 호출과정
재귀함수의 디자인
재귀함수는 자료구조나 알고리즘의 어려운 문제를 단순화하는데 사용됨
반응형
'C,C++' 카테고리의 다른 글
[C++]객체지향 프로그래밍_포인터(1) (0) | 2019.06.03 |
---|---|
[C++]객체지향 프로그래밍 _ 함수(1) (0) | 2019.05.20 |
[C#] Class 클래스 사용_Random 과 List (0) | 2019.04.11 |
[C,C++] 배열과 포인터 (0) | 2019.02.28 |
[C,C++] 이중 포인터 (0) | 2019.02.25 |