모든 프로그래밍 언어의 변수는 중요한 역할을 합니다. 변수는 범위에 따라 전역변수와 지역변수로 분류됩니다. 전역 변수와 지역 변수의 주요 차이점은 전역 변수는 전체 프로그램에서 전역적으로 액세스할 수 있는 반면, 지역 변수는 해당 변수가 정의된 함수나 블록 내에서만 액세스할 수 있다는 것입니다. 이 주제에서는 먼저 변수와 범위, 지역 변수, 전역 변수, 그리고 두 변수 간의 차이점을 이해합니다.
변수란 무엇입니까?
변수는 컴퓨터 프로그램에 값을 저장하기 위해 메모리 위치에 부여된 이름입니다. 프로그램에서 참조하고 조작할 수 있는 정보를 저장하는 데 사용됩니다.
자바의 이중
변수 이름은 무엇이든 선택할 수 있지만 프로그래밍 의미를 따라야 합니다. 그럴 수 있는 것처럼 , 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 클래스의 객체를 사용하여 접근할 수 있고, 정적 변수는 클래스 이름을 사용하여 접근할 수 있습니다.