현승일 교수
7주차 2강. 변수의 존재기간과 접근범위
학습내용
학습목표
1. 지역변수의 개념 2. 전역변수의 개념
3. static변수와 register변수
1. 지역변수의 개념에 대해 설명할 수 있다.
2. 전역변수의 개념에 대해 설명할 수 있다.
3. static변수와 register변수에 대해 설명할 수 있다.
◉
변수의 특징에 따른 분류
1. 지역변수의 개념(1)
• 변수를 나누는 기준 - 메모리 상의 존재 기간
- 변수에 접근할 수 있는 영역
• 변수의 특성에 따른 분류
- 지역 변수(Local Variable) : 중 괄호 내(함수 내)에 선언되는 변수 - 전역 변수(Global Variable) : 함수 내에 선언되지 않는 변수
- 정적 변수(Static Variable) : 함수 내부, 외부 모두 선언 가능 - 레지스터 변수(Register Variable) : 선언에 제한이 많이
따름(compiler 에 의해 결정됨)
◉
지역변수
1. 지역변수의 개념(2)
• 지역변수 (local variable)
- 중괄호 내에 선언되는 변수는 모두 지역변수임 - 지역변수는 해당지역을 벗어나면 자동으로 소멸됨
- 지역변수는 선언된 지역 내에서만 유효하기 때문에 선언된 지역이 다르면 이름이 같아도 문제가 되지 않음
- 지역변수는 스택(stack)이라는 메모리에 저장됨
◉
지역변수의 예
1. 지역변수의 개념(3)
• 지역변수는 스택에 함수 방문 시 마다 매번 할당되고 종료 시 소멸됨
◉
전역변수
2. 전역변수의 개념(1)
• 프로그램이 처음 실행되면 메모리 공간에 할당되어서 프로그램이 종료될 때까지 메모리 공간에 남아있는 변수
• 특징
1) 프로그램의 시작과 동시에 메모리 공간 할당, 종료 시까지 존재 2) 별도의 값으로 초기화하지 않으면 0 으로 초기화 됨
3) 프로그램 전체 영역 어디서든 접근이 가능
• 전역변수가 많아지면 복잡해지고, 좋은 구조의 프로그램과는 거리가 멀어짐(전역변수의 사용을 최소화 하는 것이 좋음)
◉
전역변수의 예
2. 전역변수의 개념(2)
• 전역변수 초기 값 : 0
• 프로그램 전체에 영향
◉
전역변수의 예
2. 전역변수의 개념(3)
• 전역변수와 동일한 이름의 지역변수 사용?
해당 지역 내에서
가까운 곳에서 정의된 것이 우선함
• 전역변수와 지역변수 명을 같이 사용하는 것은 좋지 못함
◉
static 변수
3. static변수와 register변수(1)
• 지역변수의 특징
- 선언된 함수 내에서만 접근이 가능함
- 함수 내에서 선언된 지역변수는 해당 함수가 반환하면 소멸됨
• 지역변수에 static 이 붙은 경우
- 선언된 함수 내에서만 접근이 가능함(지역변수 특징) - 딱 1회 초기화되고 프로그램 종료 시까지 메모리 공간에
존재함(전역변수 특징)
- static 으로 선언된 지역변수는 전역변수와 동일한 시기에 할당되고, 소멸됨
◉
static 변수의 예
3. static변수와 register변수(2)
• Static 변수는 전역변수랑 같은 성격을 가짐
- 전역변수 처럼 0으로 초기화 - 프로그램 시작 과 동시에 할당
및 초기화 되어서 프로그램이 종료될 때 까지 메모리 공간에 남아 있음
• 선언위치 : 접근범위를 제한하기 위하여 함수 내 위치
◉
register 변수
3. static변수와 register변수(3)
• 지역변수에서 선언 가능
• 레지스터는 CPU 내에 존재하는 그 크기가 매우 작은 메모리임.
하지만 CPU내에 존재하기 때문에 이 메모리에 저장된 데이터를 대상으로 하는 연산은 매우 빠름
• 레지스터에 저장여부는 전적으로 compiler 가 결정함
• 전역변수는 register 변수로 사용할 수 없음
정리하기
1. 지역변수의 개념
- 지역 변수(Local Variable) : 중 괄호 내(함수 내)에 선언되는 변수
2. 전역변수의 개념
- 전역 변수(Global Variable) : 함수 내에 선언되지 않는 변수
3. static변수와 register변수
- 정적 변수(Static Variable) : 함수 내부, 외부 모두 선언 가능
- 레지스터 변수(Register Variable) : 선언에 제한이 많이 따름 (compiler 에 의해 결정됨)
다음시간에는…
에 대해 학습해 보겠습니다.
참고문헌