학습내용
- 기초 이해
- 정적 변수
학습목표
- 스토리지 클래스의 종류에 대해 설명할 수 있다.
- 정적 변수의 특징에 대해 설명할 수 있다.
기초 이해
1. 기억부류(스토리지 클래스)
- 변수나 함수를 선언할 때 사용되는 키워드
1) 변수나 함수의 저장 위치와 사용 범위를 결정
2) 변수나 함수 선언 시 맨 앞에 지정
3) 변수의 디폴트 기억 부류는 auto이고, 함수의 디폴트 기억 부류는 extern
2. auto변수
- 지역 변수는 디폴트로 auto 기억 부류를 사용
- --> auto 지역 변수는 선언된 위치에서 자동으로 생성되고, 선언된 블록을 빠져나갈 때 자동을 해제됨
- 전역 변수에는 auto 지정불가
3. register변수
1) 변수를 메모리에 할당하는 대신 CPU의 레지스터에 할당
2) 변수를 레지스터에 할당하면 변수에 좀 더 빠르게 접근
3) 보통 루프 제어 변수를 레지스터 변수로 선언
4) register 변수로 선언해도 변수가 레지스터에 할당되지 않을 수 있음
5) 레지스터 변수에 대해서는 주소 구하기 연산자를 사용할 수 없음
4. global 변수
1) 다른 곳에 선언된 변수에 대하여 별도의 메모리 할당 없이 해당 변수를 사용
2) 전역 변수를 코드 중간에 선언하면, 전역 변수가 선언된 뒤쪽에 정의된 함수에서만 전역 변수를 사용 가능
전방 선언(Forward Declaration) |
전역 변수에 대한 extern 선언이 있으면 전역 변수가 선언된 위치와 관계없이 전역 변수 사용 가능 |
정적 변수
1. 정적 지역 변수
- 키워드 : static
1) 변역 과정의 마지막 단계인 적재 시간에 기억 장소를 할당받는 변수
2) 전체 프로그램의 시작부터 종료까지를 생존 기간으로 하며 동일 기억 장소를 유지
3) 초기화는 기억 공간 할당 시 한 번만 초기화됨
4) 정적 지역 변수는 전역 변수처럼 프로그램이 시작할 때 메모리에 할당되고 프로그램이 종료할 때 해제
5) 전역 변수와는 달리 정적 지역 변수는 선언된 함수 안에서만 사용
6) 정적 지역 변수는 함수가 리턴하더라도 해제되지 않고 남아있다가 그 다음 함수 호출 시 그대로 다시 이용
2. 정적 전역 변수
- 정적 전역 변수는 정적 전역 변수가 선언된 소스 파일에서만 사용
- 정적 전역 변수는 전역 변수를 다른 소스 파일에서 접근하지 못하도록 제한
3. 스토리지 클래스 비교
구분 | 일반지역변수 | 정적지역변수 | 전역변수 | 정적전역변수 |
선언위치 | 함수 안 | 함수 안 | 함수 밖 | 함수 밖 |
생성시점 | 변수 선언 시 | 프로그램 시작 시 | 프로그램 시작 시 | 프로그램 시작 시 |
해제시점 | 함수 리턴 시 | 프로그램 종료 시 | 프로그램 종료 시 | 프로그램 종료 시 |
사용범위 | 함수 안 | 함수 안 | 프로그램 전체 | 선언된 소스파일 |
초기화하지 않았을 때 | 쓰레기 값 | 0으로 초기화 | 0으로 초기화 | 0으로 초기화 |
학습정리
1. 기초이해
- 지역 변수는 자동 변수임
- 자동 변수는 선언된 블록을 빠져나가면 소멸됨
- 레지스터 변수는 CPU의 레지스터에 할당되는 메모리도 빠른 액세스가 가능함
- 전역 변수는 프로그램 전체에서 통용되고 다른 파일에서도 통용 가능함
2. 정적 변수
- 정적 지역 변수는 할당 시 한 번만 초기화되고 선언된 블럭을 빠져나가도 소멸되지 않음
- 정적 전역 변수는 프로그램 전체에서 사용 가능함
- 정적 변수는 할당 시 0으로 초기화됨
'국비지원 학원 - JAVA기반 스마트앱 개발2021 > 프로그래밍 언어활용' 카테고리의 다른 글
전처리기 (0) | 2021.07.31 |
---|---|
배열 포인트 처리 (0) | 2021.07.31 |
함수의 인자 (0) | 2021.07.31 |
공용체와 열거체 (0) | 2021.07.31 |
구조체 (0) | 2021.07.30 |