'지역변수'에 해당되는 글 1건

  1. 2015.05.18 C++의 지역변수와 전역변수

 변수는 정의된 위치에 따라서 유효한 범위가 결정되는데 크게 전역(global) 변수, 지역(local) 변수로 나눌 수 있다.  C/C++ 프로그램을 작성하다 보면 전 영역에서 (즉, 모든 함수의 내부에서) 공통적으로 접근할 수 있는 변수를 사용해야 하는 경우도 발생하는데 이러한 경우에 전역 변수를 정의하여 사용한다.


다음 예에서 main()함수 위에 선언된 변수들 cA, iA, lA이 전역변수이고 main()함수 내부에 선언된 cB, iB, lB 등이 (main 함수의) 지역 변수이다. 전역 변수가 main()함수 위에서 (밖에서) 정의되었다는 것을 눈여겨 보기 바란다. 반면 지역변수는 함수의 내부에서 정의되었다.


char ca;
int ia;
long la = 1111111;

int main() {
   char cb;
   int ib;
   long lb = la + 2222222;
}


 전역변수는 선언된 부분 아래에 위치하는 어느 함수에서도 사용할 수 있다, 반면 지역변수는 그 변수가 선언된 함수의 내부에서만 사용될 수 있다. 그리고 지역변수는 함수가 시작될 때 생성되며 함수 수행이 끝나면 소멸된다.


  • 전역변수는 프로그램이 시작될 때 생성, 프로그램 종료시 소멸된다.

  • 지역변수는 함수가 시작될 때 생성, 함수 종료시 소멸된다.


 다음 예는 전역변수 icnt를 화면에 표시하는 프로그램 예를 실행시킨 것이다. main()함수 위에 정의된 icnt변수는 전역 변수로서 프로그램이 종료될 때까지 소멸되지 않고 그 아래의 어떤 함수에서도 접근할 수 있으며 그 값을 유지시킨다. 이 예에서 보면 main()함수와 countup()함수 모두에서 전역 변수 icnt를 접근하거나 값을 변경시켰다.


#include <stdio.h>

#include <stdio.h>

int icnt = 0; //전역변수

int main(int argc, char **argv)
{
   while(icnt<10) {
   countup();
   printf("icnt = %d\n", icnt);
   }
}

void countup() {
   icnt++;
}


icnt = 1
icnt = 2
icnt = 3
icnt = 4
icnt = 5
icnt = 6
icnt = 7
icnt = 8
icnt = 9
icnt = 10


 정리하면 다음과 같다. 전역 변수는 함수 외부에서 선언(초기화)하며 그 아래에 있는 모든 함수에서 접근이 가능하다. 지역 변수는 함수 내부에서 선언된 변수이며 함수가 시작될 때 생성되고 종료되면 소멸된다.


C++ 강좌 전체 목록 >>>


c{c++},n{c0028}

Posted by 살레시오
,