logo

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

모든 프로그래밍 언어의 변수는 중요한 역할을 합니다. 변수는 범위에 따라 전역변수와 지역변수로 분류됩니다. 전역 변수와 지역 변수의 주요 차이점은 전역 변수는 전체 프로그램에서 전역적으로 액세스할 수 있는 반면, 지역 변수는 해당 변수가 정의된 함수나 블록 내에서만 액세스할 수 있다는 것입니다. 이 주제에서는 먼저 변수와 범위, 지역 변수, 전역 변수, 그리고 두 변수 간의 차이점을 이해합니다.

지역변수와 전역변수

변수란 무엇입니까?

변수는 컴퓨터 프로그램에 값을 저장하기 위해 메모리 위치에 부여된 이름입니다. 프로그램에서 참조하고 조작할 수 있는 정보를 저장하는 데 사용됩니다.

자바의 이중

변수 이름은 무엇이든 선택할 수 있지만 프로그래밍 의미를 따라야 합니다. 그럴 수 있는 것처럼 , a, b, x, y, z, 하위, div, 합계, 평균 등 .

프로그램에 저장하고 사용하려는 두 값, 10과 20이 있다고 가정해 보겠습니다. 이를 위해서는 변수를 사용해야 하며 다음 단계를 수행합니다.

  • 먼저, 적절한 이름을 가진 변수를 생성하거나 선언하겠습니다.
  • 해당 값을 변수에 할당하여 저장합니다.
  • 이러한 값이 저장되면 프로그램에서 해당 변수를 해당 이름과 함께 사용할 수 있습니다.
지역변수와 전역변수

위 이미지에서 볼 수 있듯이 두 개의 메모리 슬롯, 001과 002가 있으며 이러한 위치에 A와 B라는 이름을 지정했습니다. A에는 10이 포함되고 B에는 20이 포함됩니다.

프로그래밍 언어마다 변수를 선언하는 방법이 다릅니다. 예를 들어 C 언어에서는 다음과 같은 방식으로 변수를 선언할 수 있습니다.

구문: (C 언어의 변수 선언 구문)

 datatype v1, v2, v3,....; 

예:

 #include void main(){ int a; int b; int sum; } 

변수의 범위

각 변수는 정의되어 해당 범위 내에서 사용될 수 있으며 프로그램에서 이 변수를 사용할 수 있는지 결정합니다. 범위는 해당 변수의 수명을 의미합니다. 이는 변수가 해당 범위 내에서만 액세스되거나 표시될 수 있음을 의미합니다.

변수의 범위는 선언으로 정의할 수 있으며, 변수는 주로 두 가지 방법으로 선언됩니다.

자바 반복 맵
    전역 변수:모든 기능 외지역 변수:기능 블록 내에서:

전역 변수란 무엇입니까?

  • 전역 변수는 모든 함수나 블록 외부에서 선언되고 프로그램에서 전역적으로 액세스할 수 있는 변수입니다.
  • 프로그램에 있는 모든 기능을 통해 액세스할 수 있습니다.
  • 전역 변수를 선언하면 그 값은 다른 함수와 함께 사용될 때 다양해질 수 있습니다.
  • 전역 변수의 수명은 프로그램이 실행될 때까지 존재합니다. 이러한 변수는 컴파일러에서 제공한 고정된 메모리 위치에 저장되며 자동으로 정리되지 않습니다.
  • 전역 변수는 대부분 프로그래밍에 사용되며 모든 함수가 동일한 데이터에 액세스해야 하는 경우에 유용합니다.

예:

 #include int a=50, b=40; void main() { printf('a = %d and b=%d',a,b); } 

위의 예에서 a와 b는 전역 변수입니다.

글로벌 변수의 장점

  • 전역 변수는 프로그램에 있는 모든 함수에서 액세스할 수 있습니다.
  • 단일 선언만 필요합니다.
  • 모든 기능이 동일한 데이터에 액세스하는 경우 매우 유용합니다.

전역변수의 단점

  • 전역 변수의 값은 프로그램의 모든 기능에서 사용될 수 있으므로 실수로 변경될 수 있습니다.
  • 많은 수의 전역 변수를 사용하면 프로그램에서 오류가 발생할 가능성이 높습니다.

지역 변수란 무엇입니까?

    함수 블록 내부 또는 내부에 선언된 변수를 로컬 변수라고 합니다.
  • 이러한 변수는 해당 변수가 선언된 함수 내에서만 액세스할 수 있습니다.
  • 지역 변수의 수명은 해당 함수 내에서만 유지됩니다. 즉, 함수가 실행될 때까지 변수가 존재한다는 의미입니다. 함수 실행이 완료되면 지역 변수는 소멸되고 더 이상 함수 외부에 존재하지 않습니다.
  • 지역 변수의 범위가 제한된 이유는 지역 변수가 스택에 저장되기 때문입니다. 스택은 본질적으로 동적이며 그 안에 저장된 데이터를 자동으로 정리합니다.
  • 그러나 'static' 키워드를 사용하여 변수를 정적으로 만들면 로컬 변수의 값을 유지할 수 있습니다.

예:

 #include void main() { int x=50, y=40; printf('x = %d and y=%d',x, y); } 

위의 예에서는 메인 함수 내에 x와 y라는 두 개의 변수를 선언했습니다. 따라서 이들은 지역 변수입니다.

지역변수의 장점

  • 지역 변수의 동일한 이름은 해당 변수가 선언된 함수에서만 인식되므로 다른 함수에서 사용될 수 있습니다.
  • 지역 변수는 함수가 실행될 때 제한된 시간 동안만 메모리를 사용합니다. 그 후에는 동일한 메모리 위치를 재사용할 수 있습니다.

지역 변수의 단점

  • 지역 변수의 범위는 해당 기능으로만 제한되며 다른 기능에서는 사용할 수 없습니다.
  • 지역변수에 의한 데이터 공유는 허용되지 않습니다.

글로벌 변수와 로컬 변수의 비교 차트

전역 변수 지역 변수
전역 변수는 모든 기능 블록 외부에서 선언됩니다. 지역 변수는 함수 블록 내에서 선언됩니다.
범위는 프로그램 전반에 걸쳐 유지됩니다. 범위는 제한되어 있으며 선언된 함수 내에서만 유지됩니다.
전역 변수의 모든 변경 사항은 사용되는 위치에 관계없이 전체 프로그램에 영향을 미칩니다. 지역 변수의 변경은 프로그램의 다른 기능에 영향을 주지 않습니다.
프로그램이 실행되는 동안 전역 변수는 프로그램 내에 존재합니다. 함수가 실행되면 지역변수가 생성되고, 실행이 끝나면 해당 변수는 소멸된다.
프로그램에 존재하는 모든 기능을 통해 프로그램 전반에 걸쳐 액세스할 수 있습니다. 선언된 함수 명령문에서만 액세스할 수 있으며 다른 함수에서는 액세스할 수 없습니다.
전역 변수가 초기화되지 않은 경우 기본적으로 0을 사용합니다. 지역 변수가 초기화되지 않으면 기본적으로 가비지 값을 사용합니다.
전역 변수는 메모리의 데이터 세그먼트에 저장됩니다. 지역 변수는 메모리의 스택에 저장됩니다.
동일한 이름을 가진 많은 변수를 선언할 수 없습니다. 이름은 같지만 다른 함수에서 다양한 변수를 선언할 수 있습니다.

로컬 변수와 글로벌 변수의 차이점을 이해하는 예

이제 지역 변수와 전역 변수의 차이점을 더 잘 이해하기 위해 다양한 프로그래밍 언어의 예를 이해해 보겠습니다.

C의 로컬과 글로벌

예-1:

 #include // Global variables int a; int b; int Add() { return a + b; } int Mul() { int c=10; //Local Variable int d=20; ////Local Variable return c*d; } void main() { int Ans1, Ans2, c=30;// Local variable a = 50; b = 70; Ans1 = Add(); Ans2= Mul(); printf('The addition result is: %d
',Ans1); printf('The Multiplication result is: %d
',Ans2); printf('%d
', c); } 

산출:

 The addition result is: 120 The Multiplication result is: 200 30 

위의 프로그램에서 볼 수 있듯이 우리는 그리고 Add() 및 main()과 같은 다양한 함수에서 액세스되는 전역 변수입니다. 반면에 선언된 함수에서만 액세스되는 c, d, Ans1 및 Ans2와 같은 지역 변수도 있습니다.

Mul() 함수 외부에서 c 및 d 변수를 사용하려고 하면 새 변수로 사용됩니다. main() 함수에서 c를 취하여 보여주듯이, 이는 새로운 변수로 처리됩니다.

지역 대. Python의 전역

예-1:

 v1 = 'Hey, I am Global Variable!, I can be used everywhere in the program.' #globalvariable def func1(): v2='Hey, I am Local Variable!, I can be used within this block only in the program.' #localvariable print(v2) func1() #calling func1 def func2(): print(v1) func2() #callin func2 

산출:

 Hey, I am a Local Variable!, I can be used within this block only in the program. Hey, I am Global Variable!, I can be used everywhere in the program. 

위 프로그램에서는 하나의 전역 변수 v1과 하나의 지역 변수 v2를 사용했습니다. v1은 전역적이므로 어떤 기능에서든 쉽게 접근할 수 있고, v2는 로컬적입니다. 선언된 함수 내에서만 사용됩니다. 그러나 func1에서 v1을 사용하려고 하면 오류가 발생합니다. 아래 예를 살펴보겠습니다.

예시-2

부분 파생 라텍스
 v1 = 'Hey, I am Global Variable!, I can be used everywhere in the program.' #globalvariable def func1(): v2='Hey, I am Local Variable!, I can be used within this block only in the program.' #localvariable print(v2) print(v1) func1() #calling func1 def func2(): print(v1) print(v2) func2() #callin func2 

v1에 접근하려고 하면 fun1과 func2에서 쉽게 접근할 수 있습니다. 그러나 함수 외부, 즉 func2에서 v2에 액세스하려고 하면 런타임 오류가 발생합니다. 위 코드를 실행하면 아래와 같은 결과가 출력됩니다.

런타임 에러:

 NameError: global name 'v2' is not defined 

산출:

 Hey, I am Local Variable!, I can be used within this block only in the program. Hey, I am Global Variable!, I can be used everywhere in the program. Hey, I am Global Variable!, I can be used everywhere in the program. 

지역 대. Java의 전역 변수

Java에는 전역 변수라는 개념이 없습니다. Java는 객체 지향 프로그래밍 언어이므로 모든 것이 클래스의 일부입니다. 하지만 변수를 전역적으로 액세스할 수 있게 만들고 싶다면 다음을 사용하여 변수를 정적으로 만들 수 있습니다. 공전 예어.

 class Demo { // static variable static int a = 10; // non-static or local variable int b = 20; } public class Main { public static void main(String[] args) { Demo obj = new Demo(); // accessing the non-static variable System.out.println('Value of non-static variable is: ' + (obj.b)); // accessing the static variable System.out.println('Value of static variable is:' + (Demo.a)); } } 

산출:

 Value of non-static variable is: 20 Value of static variable is:10 

위 프로그램에서는 하나의 지역 변수 또는 비정적 변수와 하나의 정적 변수를 사용했습니다. 지역 변수는 Demo 클래스의 객체를 사용하여 접근할 수 있고, 정적 변수는 클래스 이름을 사용하여 접근할 수 있습니다.