Różnica między zmienną lokalną a globalną

Autor: Laura McKinney
Data Utworzenia: 1 Kwiecień 2021
Data Aktualizacji: 15 Móc 2024
Anonim
Różnica między zmienną lokalną a globalną - Technologia
Różnica między zmienną lokalną a globalną - Technologia

Zawartość


Jak omówiliśmy wcześniej, zmienna jest nazwą nadaną lokalizacji pamięci i musi zostać zadeklarowana przed użyciem. W C wszystkie zmienne deklarowane są na początku programu. W C ++ zmienne mogą być deklarowane w dowolnym momencie, zanim zostaną użyte w instrukcjach.

Zmienne są podzielone na zmienne „lokalne” i „globalne”, co jest głównym tematem naszej dyskusji. Tutaj główna różnica między zmienną lokalną a globalną polega na tym, że zmienna lokalna jest zadeklarowana w bloku funkcyjnym. Natomiast zmienna globalna jest zadeklarowana poza funkcjami programu.

Przeanalizujmy jeszcze kilka różnic między zmienną lokalną a globalną wraz z tabelą porównawczą.

  1. Wykres porównania
  2. Definicja
  3. Kluczowe różnice
  4. Zalety
  5. Niedogodności
  6. Wniosek

Wykres porównania:

PODSTAWA DO PORÓWNANIA ZMIENNA LOKALNA ZMIENNA GLOBALNA
Deklaracja Zmienne są deklarowane wewnątrz funkcji.
Zmienne deklarowane są poza jakąkolwiek funkcją.
Zakres
W ramach funkcji, w której są zadeklarowane.W całym programie.
Wartość
Niezainicjowana zmienna lokalna powoduje przechowywanie wartości śmieci.Niezainicjowana zmienna globalna domyślnie przechowuje zero.
Dostęp Dostępne tylko przez instrukcje wewnątrz funkcji, w której są zadeklarowane. Dostęp do dowolnej instrukcji w całym programie.
Udostępnianie danychNie dostarczoneUłatwione
ŻycieTworzony, gdy blok funkcyjny jest wprowadzany i niszczony przy wyjściu. Pozostań przez cały czas wykonywania programu.
Przechowywanie
Zmienne lokalne są przechowywane na stosie, chyba że określono inaczej.
Przechowywany w ustalonej lokalizacji ustalonej przez kompilator.
Przekazywanie parametrówKoniecznie wymaganeNie jest wymagane w przypadku zmiennych globalnych.
Zmiany wartości zmiennejWszelkie modyfikacje sugerowane w zmiennej lokalnej nie wpływają na inne funkcje programu.Zmiany zastosowane w zmiennej globalnej funkcji odzwierciedlają zmiany w całym programie.

Definicja zmiennej lokalnej

ZA zmienna lokalna jest zawsze deklarowany w bloku funkcyjnym. W C zmienna lokalna jest deklarowana na początku bloku kodu. W C ++ można je zadeklarować w dowolnym miejscu bloku kodu przed ich użyciem. Dostęp do zmiennych lokalnych można uzyskać tylko poprzez instrukcje zapisane w funkcji, w której deklarowane są zmienne lokalne. Są bezpieczne w tym sensie, że nie mogą uzyskać do nich dostępu żadne inne funkcje tego samego programu.


Zmienna lokalna istnieje, dopóki blok funkcji nie zostanie wykonany, a tym samym zniszczony po wyjściu z bloku. Zmienne lokalne tracą swoją zawartość, gdy tylko wykonanie opuści blok, w którym zostały zadeklarowane.

Powodem tego jest to, że zmienne lokalne są przechowywane na stosie, chyba że określono ich specjalną pamięć. Stos ma charakter dynamiczny, a zmiana lokalizacji pamięci powoduje, że zmienna lokalna nie zachowuje swojej wartości, gdy tylko istnieje blok funkcji.

Uwaga:
Istnieje jednak sposób na zachowanie wartości zmiennej lokalnej za pomocą modyfikatora „static”.

Definicja zmiennej globalnej

ZA zmienna globalna jest zadeklarowany poza wszystkimi funkcjami obecnymi w programie. W przeciwieństwie do zmiennych lokalnych, do zmiennej globalnej można uzyskać dostęp za pomocą dowolnej funkcji obecnej w programie. Zmienne globalne nie są zbyt wiarygodne, ponieważ ich wartość można zmienić dowolną funkcją obecną w programie.


Pozostają one do momentu całkowitego wykonania całego programu. Zmienne globalne zachowują swoje wartości do momentu uruchomienia programu. Powodem jest to, że są one przechowywane w ustalonym regionie pamięci określonym przez kompilator.

Zmienna globalna jest pomocna w sytuacjach, gdy wiele funkcji uzyskuje dostęp do tych samych danych. Korzystanie z dużej liczby zmiennych globalnych może być problematyczne, ponieważ mogą wystąpić niepożądane zmiany wartości zmiennej globalnej.

  1. Zmienne lokalne są nazywane „lokalnymi”, ponieważ są znane tylko instrukcjom zapisanym w funkcji, w której zostały zadeklarowane, i nie są znane żadnej innej funkcji znajdującej się poza tym blokiem funkcji. W przypadku zmiennej globalnej są one znane każdej funkcji występującej w programie; stąd nazywane są „globalnymi”.
  2. Zmienne globalne zachowują swoją wartość, dopóki program nie znajdzie się w fazie wykonania, ponieważ są przechowywane w stałej lokalizacji określonej przez kompilator. Zmienne lokalne są przechowywane na stosie; dlatego nie zachowują swojej wartości, ponieważ „stos” ma charakter dynamiczny, ale kompilator można tak ustawić, aby zachował swoją wartość za pomocą modyfikatora „statycznego”.
  3. Jeśli globalna i lokalna zmienna zostaną zadeklarowane pod tą samą nazwą, wówczas wszystkie instrukcje bloku kodu, w którym zadeklarowana jest zmienna lokalna, będą odnosić się tylko do zmiennej lokalnej i nie będą miały wpływu na zmienną globalną.
  4. Zmienna lokalna jest niszczona, gdy sterowanie programem wychodzi z bloku, w którym deklarowana jest zmienna lokalna. Jednak zmienna globalna jest niszczona po zakończeniu całego programu.

Zalety

Zmienna lokalna

  • Główną zaletą zmiennej lokalnej jest brak przypadkowej zmiany danych. Zmienna jest zadeklarowana wewnątrz bloku, a ten blok kodu używa zmiennej i pozwala uniknąć niepożądanych efektów ubocznych.
  • Zmienna lokalna zużywa pamięć przez ograniczony okres, tylko gdy wykonywany jest blok zawierający zmienną.

Zmienna globalna

  • Zmienne globalne są bardzo przydatne, gdy masz do czynienia z kilkoma funkcjami w programie manipulującymi tymi samymi danymi.
  • Zmiany, które należało zastosować w całym programie, byłyby łatwiejsze dzięki zaimplementowaniu zmiennej globalnej.
  • Możemy uzyskać dostęp z dowolnego miejsca lub za pomocą dowolnej losowej funkcji programu.

Niedogodności

Zmienna lokalna

  • Zakres zmiennej lokalnej jest ograniczony.
  • Zabrania udostępniania danych.
  • Nie są w stanie zachować danych między wywołaniami, ponieważ zmienne lokalne są generowane i usuwane przy każdym wejściu i wyjściu z bloku. Można jednak użyć modyfikatora statycznego, aby zachować wartości.

Zmienna globalna

  • Zastosowanie dużej liczby zmiennych globalnych może powodować generowanie błędów programu.
  • Głównym problemem, który powoduje, jest przypadkowe wystąpienie zmian z powodu rozpowszechnionych zmiennych globalnych w całym programie.
  • Może to również powodować potrzebę refaktoryzacji kodu, co jest bardzo rozbudowanym procesem, w którym cały kod programu jest przekształcany.

Wniosek:

Zmienne lokalne i globalne są niezbędne i jednakowo wymagane podczas pisania programu. Jednak zadeklarowanie dużej liczby zmiennych globalnych może być problematyczne w ogromnym programie, ponieważ może powodować niepożądane zmiany w zmiennej globalnej; trudno byłoby ustalić, która część programu wprowadziła tę zmianę. Dlatego należy unikać deklarowania niepotrzebnych zmiennych globalnych.