본문 바로가기
방통대/C프로그래밍

7-2 기억클래스

by 꿈꾸는 몽나 2024. 4. 1.
728x90

기억클래스

: 변수를 기억공간의 특정영역에 할당하는 방법

: 즉, 각 변수의 유효범위와 존속기간을 설정

 

-변수의 사용위치에 따라 : 지역변수, 전역변수

-변수의 존속기간에 따라 : 자동변수, 정적변수, 외부변수, 레지스터변수

 

 

 

 

-지역변수

: 특정 범위 내에서만 통용되는 변수

: 선언된 블록이나 함수 내에서만 사용 가능

: 함수에서 사용되는 매개 변수도 해당

 

 

 

- 전역변수

: 함수 밖이나 외부파일에서 선언되어 프로그램 전체에 걸쳐 사용될 수 있는 변수

 

 

 

* 지역변수와 전역변수의 유효범위

// 변수 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를 사용

: 자동 변수와 동일한 속성

: 프로그램의 실행속도 증가를 목적으로 사용(주로 반복문에서 카운터 변수로 사용)

 

 

 

출력)

728x90

'방통대 > 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