C언어: [지역변수] [전역변수] [지역 정적변수]

황정욱·2022년 10월 14일
0
post-thumbnail
  1. 전역변수
    생명주기 : 프로그램이 시작되는 순간 메모리가 확보되고 프로그램이 종료될 때 제거된다.
    적용범위 : 해당 프로그램 전영역에서 사용이 가능하다.

  2. 지역변수
    생명주기 : 변수 선언시에 메모리가 확보되고 해당 지역이 끝날 때 제거된다. 지역은 중괄호{}로 표시를 한다.
    적용범위 : 자기 소속 지역 내에서만 사용이 가능하다. { } 중괄호 내에서만 사용이 가능.

  3. 지역 정적변수 (생명주기 -> 전역변수, 적용범위 -> 지역변수)
    생명주기 : 전역변수처럼 프로그램이 시작되는 순간에 메모리가 확보되며 프로그램을 종료 시켜야 메모리가 제거된다.
    적용범위 : 지역변수와 마찬가지로 자기소속 내 (중괄호 내 { })에서만 사용이 가능하다.

#include <stdio.h>

int global_num = 100;

void main()
{
	{
		int areaNum = 200;
		printf("%d\n", global_num);
		printf("%d\n", areaNum);
	}

	printf("\n\n");

	{
		static int staticAreaNum = 300;
		printf("%d\n", staticAreaNum);
	}

	printf("\n\n");
	global_num = 1000;
	printf("%d\n", global_num);

	staticAreaNum = 3000;
	areaNum = 2000;
	printf("%d\n", area_num);

	getchar();
}

코드를 살펴보면 global_num은 글로벌 변수(전역변수)이기 때문에 어디서든 사용이 가능하다. 하지만 중괄호 내에 선언한 변수 area_num과 static_area_num은 호출도 안되며 값을 대입 하는 것 또한 불가능하다. --> 마지막 코드 getchar(); 전에 작성한 3줄의 코드는 에러가 발생한다.

profile
C언어, C#, 그리고 유니티

0개의 댓글