반응형
SMALL

학습목표

1. 기억클래스를 이해할 수 있다.

 

주요용어

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

지역 변수 : 특정 범위 내에서만 사용되는 변수

전역 변수 : 프로그램 전체에 걸쳐 사용될 수 있는 변수

자동 변수 : 함수 실행 시 만들어 지고 실행이 끝나면 기억공간이 제거되는 유형

정적 변수 : 프로그램이 끝날 때까지 기억영역이 유지되는 유형

외부 변수 : 함수외부에 선언되어 프로그램이 끝날 때까지 기억영역이 유지되는 유형

레지스터 변수 : CPU 내의 레지스터에 자료를 저장하고자 할 때 사용되는 유형

 

 

 

5.4 기억 클래스 storage class

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

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

 

- 변수 사용위치에 따라

  * 지역변수

  * 전역변수

 

- 변수의 존속기간에 따라

  * 자동변수

  * 정적변수

  * 외부변수

  * 레지스터변수

 

5.4.1 지역변수와 전역변수

지역변수(local varialble)

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

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

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

 

전역변수(global variable)

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

 

 

지역변수와 저역변수의 유효범위

>> x, y는 프로그램 전체에서 사용 가능한 전역변수 (함수 외부에서 선언)

 

 

>>>>

  m,n은 fcn1( ) 함수 내에서만 사용 가능한 지역변수

 

 

 

 

>>>>

  m, n은 fcn2( ) 함수 내에서만 사용 가능한 지역변수

 

 

 

 

>>>>

  m, n은 main( ) 함수 내에서만 사용 가능한 지역변수

 

 

 

 

 

 

 

 

전역변수와 지역변수의 비교

- 동일 범위 내에서는 지역변수가 우선

- 전역변수의 선언은 프로그램 선두에 위치

- 가급적 지역변수를 사용하는 것이 효율적 

  > 함수의 독립석 향상 

  > 디버깅 효율 향상

  > 기억 공간 절약

 

 

 

//지역변수의 사용 예1

#include <stdio.h> 
void fcn1();
void main(){
   int i = 10;
/* 변수 i는 main() 함수 내부에 선언되어 
main() 함수에서만 사용가능한 지역변수 */
   printf("\n main i = %d", i);
   fcn1();
   printf("\n main i = %d", i);}

void fcn1(){ 
   int i; 
/*변수 i는 fcn1() 함수 내부에 선언된 지역변수로,  
main() 함수의 변수 i와는 별개로 사용됨 */ 
   i = 20; 
   printf("\n fcn1 i = %d",i); }

 

//지역변수의 사용 예2

#include <stdio.h> 
void main(){ // 블록 A 시작
   int x = 2, y = 4;
   printf("A : x = %d, y = %d \n", x, y); // 블록 A의 x 와 y 

{    // 블록 B 시작  
   int x; 
   x = 5; 
   y++; 
   printf("B : x = %d, y = %d \n", x, y); //블록 B의 x와 블록 A의 y  } // 블록 B 끝 
   printf("A : x = %d, y = %d \n", x, y);  // 블록 A의 x 와 y  } // 블록 A  끝 

 

 

 

//전역변수의 사용 예1

#include <stdio.h>
void fcn();
int x;
/* 전역변수, 가급적 프로그램 선두에 위치하는 것이 좋고,
초기화하지 않으면 0으로 자동 초기화됨 */

void main(){ 
   printf("1) x = %d \n", x); 
   fcn1(); 
   printf("2) x = %d \n", x);}  
   void fcn1(){ 
//전역변수이므로 어디서나 사용 가능 
   x++;  } 

 

 

 

 

반응형
LIST

+ Recent posts