VisualStudio/C#

[C#] 전역 변수, 지역변수

usingsystem 2022. 8. 10. 12:13
728x90

전역 변수와 지역 변수의 차이

전역 변수

  • 클래스 내부 어디서든 불러오고 수정 가능.
  • 전역 변수는 클래스의 멤버 변수로 선언됩니다.
  • 메모리에 항상 존재하며, 함수 호출 여부와 관계없이 유지됩니다.
int a = 1; // 전역 변수 (멤버 변수)

지역 변수

  • 함수 내부에서 선언되고, 해당 함수 내에서만 유효.
  • 함수가 호출되면 생성되고, 함수 종료 시 파기.
  • 지역 변수는 메모리 최적화에 기여할 수 있음.
void MyFunction()
{
    int a = 5; // 지역 변수
    a = 6; // 함수 내에서만 유효
}

 

메모리 최적화와 지역변수

  • 지역 변수는 필요할 때만 메모리를 사용하므로 메모리 사용량을 줄일 수 있음.
  • 함수 호출 시 생성되고, 함수 종료 시 파괴되어 일시적으로만 메모리에 존재.
static 변수
  • 공유 자원으로 사용되는 변수.
  • 특정 클래스의 모든 인스턴스가 하나의 값을 공유.
  • 클래스가 초기화되지 않아도 직접 접근 가능.
  • 언제 어디서 접근하더라도 항상 동일한 값을 보장.

static 변수와 일반 변수 비교

public class Test
{
    public int b;       // 일반 변수 (인스턴스별로 별도 저장)
    public static int e; // 정적 변수 (모든 인스턴스가 공유)
}

internal class Program
{
    static void Main(string[] args)
    {
        Test t1 = new Test();
        Test t2 = new Test();

        t1.b = 10;      // t1의 b 값만 수정
        t2.b = 20;      // t2의 b 값만 수정

        Test.e = 30;    // static 변수 e는 모든 인스턴스가 공유
        Console.WriteLine($"t1.b: {t1.b}, t2.b: {t2.b}, Test.e: {Test.e}");
    }
}

출력 결과

t1.b: 10, t2.b: 20, Test.e: 30

 

 

  • 전역 변수는 프로그램의 모든 영역에서 접근 가능하지만, 과도한 사용은 관리 및 디버깅을 어렵게 만듦.
  • 지역 변수는 필요할 때만 메모리를 사용하며 메모리 최적화에 유리.
  • static 변수는 공유 자원이 필요할 때 적합하며, 언제 어디서든 동일한 값이 유지됨.
728x90