VisualStudio/C#

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

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

전역 변수로 선언하면 어디에서든 불러오고 수정할 수 있다.

 

하지만 함수 안에서 변수를 선언하면 그 변수는 지역 변수가 된다.

이때 해당 변수는 함수 내에서만 존재하며 밖에서는 불러올 수 없다.

그렇기 때문에 각기 다른 함수 내에서 같은 이름의 지역 변수를 만들어도 무관하다.

int a = 1; // 전역 변수(멤버 변수)

void a ()
{
	int a = 5; // 지역 변수
    a = 6;
}

이렇게 이미 전역 변수를 선언했는데 같은 이름의 지역 변수를 선언하게 되면 그 함수 안에서는 지역 변수가 우선이 되므로 전역 변수는 무시된다.

 

지역 변수는 평상시 존재하지 않다가 함수가 호출되면 생성됐다가 함수가 종료되면 파기된다.

이걸 이용해 메모리 최적화가 가능하다.

 

접근 지정자
public class test 
{
    private int a;
    public int b;
    int c;
    protected int d;
    public static int e; // 공유자원, 정적 변수
}

접근 지정자는 클래스 외부에서 변수를 가져다 쓸 수 있는지 설정하는 것이다.

private, public, protect 크게 이렇게 3가지가 있다.

public은 다른 클래스에서 불러오거나 수정도 할 수 있다.

private은 클래스 내부에서만 접근이 가능하다.

protected는 외부에서는 접근이 불가능하지만 자식 클래스에서는 접근이 가능하다.

 

함수도 접근 지정자로 접근 여부를 지정해줄 수 있다.

아무것도 쓰지 않으면 private이 생략된 것이다.

 

접근 지정자를 사용하는 이유는 다른 곳에서 건드리면 안되는 코드를 private으로 작성할 수도 있고 협업할 때 해당 변수, 함수가 클래스 내부에서만 사용된다는 걸 쉽게 알 수 있는 결과이기도 하다.

 

그리고 static이라는 게 있는데 이건 공유자원으로 만들겠다는 것이다.

공유자원이라는 게 무슨 뜻이냐면 test 클래스를 b1, b2, b3 이렇게 새로운 클래스에 다시 선언한 후 변수 b를 수정해주면 각각 다른 값을 가지게 되지만 static으로 선언돼 있는 e는 모두 같은 값을 공유하게 된다.

그렇기 때문에 어떤 클래스든지 하나만 값을 바꾸면 다같이 바뀌게 된다.

코드 내에서 언제 어디서 접근해도 항상 같아야 한다면 static을 사용하면 된다.

 

출처: https://hong-825.tistory.com/entry/C-전역변수-지역변수-지정자 [가치있는 정보의 기록:티스토리]

728x90