Erinevus kohaliku ja globaalse muutuja vahel

Autor: Laura McKinney
Loomise Kuupäev: 1 Aprill 2021
Värskenduse Kuupäev: 16 Mai 2024
Anonim
Scratch
Videot: Scratch

Sisu


Nagu me varem arutasime, on muutuja nimi, mis antakse mälupesale ja see tuleb enne kasutamist deklareerida. C-osas deklareeritakse kõik muutujad programmi alguses. C ++ puhul saab muutujad igal ajal deklareerida, enne kui neid juhistes kasutatakse.

Muutujad klassifitseeritakse muutujateks „lokaalsed” ja „globaalsed”, mis on meie arutelu põhiteema. Peamine erinevus kohaliku ja globaalse muutuja vahel on see, et kohalik muutuja deklareeritakse funktsiooniplokis. Seevastu globaalne muutuja kuulutatakse väljaspool programmi funktsioone.

Uurime veel mõnda erinevust kohaliku ja globaalse muutuja vahel koos võrdlusdiagrammiga.

  1. Võrdlusdiagramm
  2. Definitsioon
  3. Peamised erinevused
  4. Eelised
  5. Puudused
  6. Järeldus

Võrdlusdiagramm:

VÕRDLUSE ALUS KOHALIK MUUTUVUS GLOBAALNE MUUTUVUS
Deklaratsioon Muutujad deklareeritakse funktsiooni sees.
Muutujad deklareeritakse väljaspool funktsiooni.
Reguleerimisala
Funktsioonis, mille sees nad kuulutatakse.Kogu programmi vältel.
Väärtus
Algatamata kohaliku muutuja tulemuseks on prügi väärtuse salvestamine.Algatamata globaalne muutuja salvestab vaikimisi nulli.
Juurdepääs Juurdepääs ainult avaldustele funktsioonis, milles need deklareeritakse. Juurdepääs kogu programmi mis tahes avaldusele.
Andmete jagamineEi ole tagatudLihtsustatud
EluLoodud funktsiooniploki sisestamisel ja hävitamisel väljumisel. Püsige kogu programmi täitmise aja jooksul.
Ladustamine
Kohalikud muutujad salvestatakse virnas, kui seda pole täpsustatud.
Salvestatud koostaja otsustatud asukohas.
Parameeter möödubVajalikGlobaalsete muutujate puhul pole nõutav.
Muutuja väärtuse muutusedÜkski kohalikku muutujasse viitav modifikatsioon ei mõjuta programmi teisi funktsioone.Funktsiooni globaalses muutujates rakendatud muudatused kajastavad muutusi kogu programmis.

Kohaliku muutuja määratlus

A kohalik muutuja on alati deklareeritud funktsiooniplokis. C-s deklareeritakse kohalik muutuja koodiploki alguses. C ++ -s saab need enne kasutamist deklareerida koodiplokis. Kohalikele muutujatele pääseb juurde ainult funktsiooni sees kirjutatud avalduste abil, milles kohalikud muutujad deklareeritakse. Need on turvalised selles mõttes, et neile ei pääse juurde sama programmi muu funktsioon.


Kohalik muutuja eksisteerib seni, kuni funktsiooni plokk on täitmisel, ja hävitatakse see siis pärast täitmist plokist väljumist. Kohalikud muutujad kaotavad oma sisu kohe, kui täitmine lahkus plokist, milles need deklareeriti.

Selle põhjuseks on see, et kohalikke muutujaid hoitakse virnas, kui pole täpsustatud nende spetsiaalset salvestusruumi. Virn on oma olemuselt dünaamiline ja mälu asukoha muutus viib põhjuseni, miks kohalik muutuja ei hoia nende väärtust kohe, kui funktsiooni blokk on olemas.

Märge:
Siiski on olemas viis kohaliku muutuja väärtuse säilitamiseks staatilise modifikaatori abil.

Globaalse muutuja määratlus

A globaalne muutuja kuulutatakse väljaspool kõiki programmis olevaid funktsioone. Erinevalt kohalikest muutujatest pääseb globaalsele muutujale juurde iga programmis sisalduva funktsiooniga. Globaalsed muutujad pole kuigi usaldusväärsed, kuna nende väärtust saab muuta programmi kõigi funktsioonide abil.


Need püsivad seni, kuni kogu programm on täielikult käivitatud. Globaalsed muutujad säilitavad oma väärtused, kuni programm on käivitatud. Põhjus on see, et neid hoitakse fikseeritud mälu piirkonnas, mille otsustab kompilaator.

Globaalne muutuja on abiks olukordades, kus samadele andmetele pääseb juurde mitmele funktsioonile. Suure hulga globaalsete muutujate kasutamine võib osutuda problemaatiliseks, kuna globaalse muutuja väärtuses võivad olla soovimatud muudatused.

  1. Kohalikke muutujaid nimetatakse „lokaalseteks”, kuna need on teada ainult nende funktsioonide sisse kirjutatud avalduste jaoks, milles need on deklareeritud, ja mitte ühegi muu funktsiooni jaoks, mis väljaspool seda funktsiooniplokki asub. Globaalse muutuja puhul on need teada programmis olevatele funktsioonidele; seetõttu nimetatakse neid globaalseteks.
  2. Globaalsed muutujad säilitavad oma väärtuse seni, kuni programm on käivitusfaasis, kuna neid hoitakse koostaja poolt kindlaksmääratud asukohas. Kohalikud muutujad salvestatakse virna; seega ei säilita nad oma väärtust, kuna pinu on oma olemuselt dünaamiline, kuid kompilaatorit saab suunata nende väärtust säilitama, kasutades staatilist modifikaatorit.
  3. Kui globaalne ja kohalik muutuja deklareeritakse sama nimega, siis viitavad kõik koodiploki avaldused, milles kohalik muutuja deklareeritakse, ainult kohalikule muutujale ja globaalsele muutujale mõju ei avalda.
  4. Kohalik muutuja hävitatakse, kui programmi juhtimine väljub plokist, milles kohalik muutuja deklareeritakse. Globaalne muutuja hävitatakse, kui kogu programm lõpetatakse.

Eelised

Kohalik muutuja

  • Kohaliku muutuja peamine eelis on see, et andmeid ei muudeta tahtmatult. Muutuja deklareeritakse ploki sees ja see koodiplokk kasutab muutujat ning hoiab ära soovimatud kõrvaltoimed.
  • Kohalik muutuja tarbib mälu piiratud ajavahemiku jooksul, ainult siis, kui käivitatakse muutujat sisaldav plokk.

Globaalne muutuja

  • Globaalsed muutujad on väga kasulikud, kui tegelete programmi samade andmetega manipuleerimise mitme funktsiooniga.
  • Kogu programmi rakendamiseks vajalikud muudatused oleksid globaalse muutuja juurutamisega lihtsamad.
  • Me pääsete juurde ükskõik kust või programmi mis tahes juhusliku funktsiooni kaudu.

Puudused

Kohalik muutuja

  • Kohaliku muutuja ulatus on piiratud.
  • Keelab andmete jagamise.
  • Nad ei suuda andmeid kõnede vahel säilitada, kuna kohalikud muutujad genereeritakse ja eemaldatakse iga sisestuse ja plokist väljumisega. Väärtuste säilitamiseks saab kasutada ka staatilist modifikaatorit.

Globaalne muutuja

  • Suure hulga globaalsete muutujate kasutamine võib põhjustada programmivigu.
  • Peamine probleem, mida see põhjustab, on muudatuste juhuslik esinemine kogu programmis levinud globaalsete muutujate tõttu.
  • Samuti võib tekkida vajadus koodireaktorite järele, mis on väga ulatuslik protsess, kus kogu programmi kood on ümber korraldatud.

Järeldus:

Programmi kirjutamisel on nii kohalikud kui ka globaalsed muutujad vajalikud ja võrdselt vajalikud. Suure hulga globaalsete muutujate deklareerimine võib aga massprogrammis osutuda problemaatiliseks, kuna see võib põhjustada globaalse muutuja soovimatuid muutusi; ja oleks raske kindlaks teha, milline programmi osa muutuse tegi. Seega tuleks vältida tarbetute globaalsete muutujate deklareerimist.