본문 바로가기
코스웨어/16년 스마트컨트롤러

20160316_정일모_업무일지_변수

by 알 수 없는 사용자 2016. 3. 17.
728x90
반응형

 

지역변수

 

 

 

 

 

지역 변수(Local variable)란 어떤 한정되 지역 에서만 사용할수 있는 변수

 

지역 변수는 그 변수가 선언된 블럭이 끝나면 그 변수에 들어있는 값을 잃게 됨니다.

지역 변수를 선언할때는 블럭의 윗부분에 선언을 해야 합니다.
모든 작업 전에 선언해야 하죠. 그렇지 않으면 에러가 납니다

 

 

 

 

전역변수

 

 

 

 

  • 전역 변수(Global variable)는 지역 변수와는 다르게 한정된 지역이 아닌 모든 지역에서 사용이 가능한 변수를 말하는 것 입니다.
  • 블럭 밖에서 선언된 변수는 모두 전역 변수
  • 전역 변수는 프로그램이 끝날때까지 들어있는 값을 계속 유지합니다
     

 

 단점

  • 변수 관리가 어렵다
  • 메모리를 프로그램 종료시 까지 차지한다
  • 실행 파일  용량도 증가시킨다.

.

 

 

정적변수

 

 

:정적 변수(static variable)

  • 접근은 지역변수처럼 특정 위치에서만 접근을 가능하도록 하여 안정성을 확보함과 동시에 전역변수처럼 항상 존재하는  변수. 이런 두 변수의 장점만을 취한 변수

 1. 선언 위치는 지역변수와 같다. ( 순수 C언어의 경우 함수의 맨 처음 부분, C++은 어디 

    서든 지 가능 )

 

 2. 특정 선언 지역에서만 접근 할 수 있다. 

 

 3. 메모리 공간에서 변수의 저장공간은 전역변수와 그 위치가 같다. 

 

 4. 초기값을 주지 않을 경우 항상 0 으로 초기화 되며 프로그램을 실행시킬 때 단 한번만 초기

    화된다. 

   (그래서 함수가 실행될 때 계속해서 초기값을 0으로 해주는 것 같지만 실제론 처음 한번만

    초기화시킨다.)

 

'지역이 사라져도 변수는 유지되어야하는 경우' 정적변수가 사용됩니다. 정적변수를 사용하는 것 또한 마찬가지로 키워드를 사용합니다.이때 사용하는 키워드는 static 입니다. 변수를 선언할 때 static 이라는 키워드를 앞에 붙여주면 됩니다

 

 

 

 

 

 

 

 

 

#include <stdio.h>

int D;
int E = 99;
int F;
int G = 98;
int H;

int main()
{
 int A = 0;
 int B;
 int C = 100;

  printf("☆★☆★☆ CODE ☆★☆★☆\n");
  printf("printf의 주소: %p \n"&printf); //코드영역
  printf("main의 주소: %p \n"&main); 
  printf("☆★☆★☆★☆★☆★☆★☆\n");
  printf("\n\n");
  printf("☆★☆★☆ DATA ☆★☆★☆\n"); 
  printf("G의 주소: %p \n"&G);  //데이타 영역
  printf("E의 주소: %p \n"&E);
  printf("☆★☆★☆★☆★☆★☆★☆\n");
  printf("\n\n");
  printf("☆★☆★☆  BSS  ☆★☆★☆\n");
  printf("D의 주소: %p \n"&D);
  printf("F의 주소: %p \n"&F);    //BSS영역
  printf("H의 주소: %p \n"&H);
  printf("☆★☆★☆★☆★☆★☆★☆\n");
  printf("\n\n");
  printf("☆★☆★☆ Stack ☆★☆★☆\n");
  printf("A의 주소: %p \n"&A);
  printf("B의 주소: %p \n"&B);  // 스택영역
  printf("C의 주소: %p \n"&C);
  printf("☆★☆★☆★☆★☆★☆★☆\n");
 
 
  return 0;
}


 

 

 

 

 

 

728x90