기억클래스
: 변수를 기억공간의 특정영역에 할당하는 방법
: 즉, 각 변수의 유효범위와 존속기간을 설정
-변수의 사용위치에 따라 : 지역변수, 전역변수
-변수의 존속기간에 따라 : 자동변수, 정적변수, 외부변수, 레지스터변수
-지역변수
: 특정 범위 내에서만 통용되는 변수
: 선언된 블록이나 함수 내에서만 사용 가능
: 함수에서 사용되는 매개 변수도 해당
- 전역변수
: 함수 밖이나 외부파일에서 선언되어 프로그램 전체에 걸쳐 사용될 수 있는 변수
* 지역변수와 전역변수의 유효범위
// 변수 x, y는 프로그램 전체에서 사용 가능한 전역변수(함수외부에서 선언됨)
// 변수 m, n은 해당 함수 내에서만 사용 가능한 지역 변수
지역변수의 사용 예시)
출력)
main i = 10
fcn1 i = 20
main i = 10
지역변수의 사용 예2)
출력)
전역변수의 사용 예)
출력)
*전역변수와 지역변수의 비교
: 동일 범위 내에서는 지역변수가 우선
: 전역변수의 선언은 프로그램 선두에 위치
: 가급적 지역변수를 사용하는 것이 효율적
-함수의 독립성 향상
-디버깅 효율 향상
-기억 공간 절약
*변수의 기억클래스 종류
: 변수의 초기화, 존속기간, 유효범위에 따라 구별
-자동 변수(auto)
-정적 변수(static)
-외부 변수(extern)
-레지스터 변수(register)
*기억클래스를 이용한 변수선언
-형식 : 기럭클래스 자료형 변수명;
-기능 :
1. 기존의 변수 선언문에 기억클래스만 기입
2. 선언된 변수에 저장된 자료는 해당 기억영역에 놓이게 됨
ex)
auto int a;
static int b;
extern int c;
register int d;
-자동변수
: 함수 실행시 만들어지고, 실행이 끝나면 기억공간이 제거됨
: 예약어 auto를 사용(생략 가능)
: 통용 범위는 변수가 선언된 블록이나 함수 내로 한정
: 지역변수에 해당
: 초기화가 필요
ex)
출력)
// 선언함수가 틀리면 변수 이름이 같아도 서로 다른 변수를 의미하며, 작은 범위의 변수가 우선한다.
-정적변수
: 기억영역이 프로그램 끝날 때까지 유지
: 예약어 static을 사용
: 전역 변수에 해당
: 변수의 값은 프로그램 실행 중 계속 유지
: 초기화가 없으면 0으로 초기화 됨
ex)
출력)
// 자동변수는 해당 블록을 벗어나면 그 값을 상실하지만, 정적변수는 값을 계속 유지
ex2)
출력)
// 자동변수는 호출될 때 마다 값이 초기화되지만, 함수 내에서 사용된 정적변수는 함수를 빠져나가더라도 그 값을 유지(한번만 초기화 됨)
-외부변수
: 함수의 외부에서 선언
: 예약어 extern을 사용
: 전역 변수에 해당
: 초기화가 없으면 0으로 초기화 됨
: 다른 파일에서 외부변수로 선언된 변수의 값을 참조할 수 있다.
ex)
출력)
ex2)
출력)
-레지스터 변수
: CPU 내의 레지스터에 자료를 저장하고자 할 때
: 예약어 register를 사용
: 자동 변수와 동일한 속성
: 프로그램의 실행속도 증가를 목적으로 사용(주로 반복문에서 카운터 변수로 사용)
출력)
'방통대 > C프로그래밍' 카테고리의 다른 글
[C] 8-2 다차원 배열 (0) | 2024.04.08 |
---|---|
[C] 8-1 1차원 배열 (0) | 2024.04.08 |
7-1 매개변수 사이의 자료 전달 (4) | 2024.04.01 |
6-3 사용자 정의 함수 (2) | 2024.03.25 |
6-2 표준 함수 (0) | 2024.03.25 |