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

지역 변수와 전역 변수의 주요 차이점

  • 지역 변수는 함수 내부에서 선언되는 반면, 전역 변수는 함수 외부에서 선언됩니다.
  • 지역 변수는 함수가 실행을 시작할 때 생성되고 함수가 종료되면 소멸됩니다. 반면, 전역 변수는 실행이 시작될 때 생성되고 프로그램이 끝나면 소멸됩니다.
  • 로컬 변수는 데이터 공유를 제공하지 않는 반면, 글로벌 변수는 데이터 공유를 제공합니다.
  • 지역 변수는 스택에 저장되는 반면, 전역 변수는 컴파일러가 결정한 고정된 위치에 저장됩니다.
  • 매개 변수 전달은 지역 변수에 필요하지만 전역 변수에는 필요하지 않습니다.

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

변수란 무엇입니까?

변수는 프로그램이 조작할 수 있는 저장 영역에 할당된 이름입니다. 변수 유형은 변수 메모리의 크기와 레이아웃을 결정합니다.

또한 해당 메모리에 저장해야 하는 값의 범위와 해당 변수에 적용할 수 있는 연산의 특성도 결정합니다.

변수의 범위

변수의 범위는 단순히 변수의 수명입니다. 변수가 적용 가능하거나 살아있는 코드 블록입니다. 예를 들어:

function foo(){
var x;
}

함수 "foo" 내에 변수 "x"를 선언합니다. 해당 변수의 범위는 해당 함수 내부에 유지되며 해당 함수 외부에서는 사용할 수 없습니다.
변수 프로그래밍 언어를 선언할 수 있는 변수는 세 곳이 있습니다.

  • 함수 또는 블록 내부: 지역 변수
  • 모든 함수 외부: 전역 변수
  • 함수 매개변수 정의: 형식 매개변수

지역 변수

지역 변수 프로그래밍 블록 또는 서브루틴 내에서 선언된 변수 유형으로 정의됩니다. 선언된 서브루틴 또는 코드 블록 내에서만 사용할 수 있습니다. 로컬 변수는 함수 블록이 실행될 때까지 존재합니다. 그 후에는 자동으로 파괴됩니다.

지역변수의 예

public int add(){
int a =4;
int b=5;
return a+b;
}

여기서 'a'와 'b'는 지역변수이다.

글로벌 변수

A 글로벌 변수 프로그램에 서브루틴이나 함수 외부에서 정의된 변수가 있습니다. 전역 범위를 갖는다는 것은 프로그램 수명 내내 그 가치를 유지한다는 것을 의미합니다. 따라서 섀도우 처리되지 않는 한 프로그램 내에 정의된 모든 기능을 통해 프로그램 전체에서 액세스할 수 있습니다.

예:

int a =4;
int b=5;
public int add(){
return a+b;
}

여기서 'a'와 'b'는 전역변수이다.

지역 변수와 전역 변수

다음은 로컬 변수와 글로벌 변수의 몇 가지 근본적인 차이점입니다.

매개 변수 지방의 글로벌
범위 함수 내부에서 선언됩니다. 함수 외부에서 선언됩니다.
가치관 초기화하지 않으면 쓰레기값이 저장된다 초기화되지 않으면 XNUMX이 기본값으로 저장됩니다.
수명 함수가 실행을 시작할 때 생성되고 함수가 종료되면 손실됩니다. 프로그램의 전역 실행이 시작되기 전에 생성되고 프로그램이 종료되면 손실됩니다.
데이터 공유 로컬 변수의 데이터는 하나의 함수로만 접근할 수 있으므로 데이터 공유는 불가능합니다. 여러 함수가 동일한 전역 변수에 액세스할 수 있으므로 데이터 공유가 가능합니다.
파라미터 지역 변수가 다른 함수의 값에 액세스하려면 매개변수 전달이 필요합니다. 프로그램 전체에서 볼 수 있으므로 전역 변수에는 매개변수 전달이 필요하지 않습니다.
변수 값 수정 한 함수에서 지역 변수의 값이 수정되면 변경 내용이 다른 함수에 표시되지 않습니다. 한 함수에서 전역 변수의 값이 수정되면 프로그램의 나머지 부분에서도 변경 사항이 표시됩니다.
에 의해 액세스됨 지역 변수는 해당 변수가 선언된 함수 내에서 명령문을 통해 액세스할 수 있습니다. 프로그램의 모든 명령문을 통해 전역 변수에 액세스할 수 있습니다.
메모리 저장 지정하지 않는 한 스택에 저장됩니다. 컴파일러가 결정한 고정된 위치에 저장됩니다.

전역 변수 사용의 이점

  • 프로그램의 모든 함수나 모듈에서 전역 변수에 액세스할 수 있습니다.
  • 모듈 외부에서 전역 변수를 한 번만 선언하면 됩니다.
  • 일관성을 유지하는 데 도움이 되므로 "상수"를 저장하는 데 이상적으로 사용됩니다.
  • 전역 변수는 여러 함수가 동일한 데이터에 액세스할 때 유용합니다.

지역 변수 사용의 장점

  • 지역 변수를 사용하면 작업이 실행되는 동안 변수 값이 그대로 유지된다는 보장이 제공됩니다.
  • 여러 작업이 동시에 실행되는 단일 변수를 변경하는 경우 결과가 예측 불가능할 수 있습니다. 그러나 로컬 변수로 선언하면 각 작업이 로컬 변수의 자체 인스턴스를 생성하므로 이 문제가 해결됩니다.
  • 지역 변수는 선언된 함수에서만 인식되기 때문에 다른 함수에서 동일한 이름을 지정할 수 있습니다.
  • 지역 변수는 함수가 끝나면 즉시 삭제되고 해당 함수가 차지하는 메모리 공간을 해제합니다.

전역 변수 사용의 단점

  • 전역으로 선언된 변수가 너무 많으면 프로그램 실행이 완료될 때까지 메모리에 남아 있습니다. 이로 인해 메모리 부족 문제가 발생할 수 있습니다.
  • 데이터는 어떤 기능으로도 수정될 수 있습니다. 프로그램에 작성된 모든 명령문은 전역 변수의 값을 변경할 수 있습니다. 이는 멀티 태스킹 환경에서 예측할 수 없는 결과를 가져올 수 있습니다.
  • 코드 리팩토링으로 인해 전역 변수가 중단되면 해당 변수가 호출되는 모든 모듈을 변경해야 합니다.

지역 변수 사용의 단점

  • 지역 변수의 디버깅 과정은 매우 까다롭습니다.
  • 모듈 간 데이터 공유가 불가능하므로 공통 데이터를 반복적으로 전달해야 합니다.
  • 범위가 매우 제한되어 있습니다.

무엇이 더 유용합니까?

모든 언어로 프로그램을 작성하는 동안 로컬 변수와 전역 변수는 똑같이 중요합니다. 그러나 전역 변수의 수가 많으면 메모리를 많이 차지할 수 있습니다. 전역 변수에 대한 바람직하지 않은 변경 사항을 식별하기가 어려워졌습니다. 따라서 원하지 않는 전역 변수를 선언하지 않는 것이 좋습니다.