Rekomenduojama, 2024

Redaktoriaus Pasirinkimas

Skirtumas tarp vietinio ir pasaulinio kintamojo

Kaip minėjome anksčiau, kintamasis yra pavadinimas, suteiktas atminties vietai, ir jis turi būti paskelbtas prieš jį naudojant. C atveju visi rodikliai deklaruojami programos pradžioje. C + + kintamieji gali būti deklaruojami bet kuriuo laiko momentu, prieš juos naudojant instrukcijose.

Kintamieji toliau skirstomi į „vietinį“ ir „pasaulinį“ kintamąjį, kuris yra pagrindinė mūsų diskusijų tema. Čia pagrindinis skirtumas tarp vietinio ir pasaulinio kintamojo yra tas, kad vietinis kintamasis yra deklaruojamas funkcijų bloko viduje, kur kaip pasaulinis kintamasis yra deklaruojamas už programos funkcijų.

Ištirsime daugiau skirtumų tarp vietinio ir pasaulinio kintamojo ir palyginimo lentelės.

Palyginimo diagrama:

Palyginimo pagrindasVietinis kintamasisPasaulinis kintamasis
DeklaracijaKintamieji deklaruojami funkcijos viduje.Kintamieji deklaruojami už bet kurios funkcijos ribų.
Taikymo sritisPer funkciją, kurios viduje jie yra paskelbti.Visoje programoje.
PrieigaPrieiga prie tik pareiškimų, funkcijų, kuriose jie yra deklaruojami, viduje.Prieiga prie bet kokio pareiškimo visame programoje.
GyvenimasSukurta, kai funkcijų blokas įvedamas ir sunaikinamas išeinant.Likę egzistuoja visą jūsų programos vykdymo laiką.
SaugojimasVietiniai kintamieji yra saugomi kamino, nebent nurodyta.Saugoma fiksuotoje vietoje, kurią nusprendžia kompiliatorius.

Vietos kintamojo apibrėžimas

Vietinis kintamasis visada nurodomas funkcijų bloko viduje. C kodo kodo bloko pradžioje deklaruojamas vietinis kintamasis. C ++ sistemoje jie gali būti paskelbti bet kurioje kodo bloko vietoje prieš jų naudojimą. Vietiniai kintamieji gali būti prieinami tik išrašų, parašytų viduje funkcijos, kurioje deklaruojamas vietinis kintamasis. Jie yra saugūs tam tikra prasme, kad jiems negalima pasiekti jokios kitos tos pačios programos funkcijos.

Vietinis kintamasis egzistuoja tol, kol funkcijos blokas bus vykdomas ir taip sunaikinamas po to, kai vykdymas išeina iš bloko. Vietiniai kintamieji praranda savo turinį, kai tik paliekamas blokas, kuriame jie yra paskelbti.

Priežastis yra ta, kad vietiniai kintamieji yra saugomi kaminai, išskyrus atvejus, kai nurodyta jų speciali saugykla. Sraigtas yra dinamiškas ir atminties vietos pakeitimas sukelia priežastį, kodėl vietinis kintamasis neturi savo vertės, kai tik atsiranda funkcijos blokas.

Pastaba:
Tačiau yra būdas išsaugoti vietinio kintamojo vertę naudojant „statinį“ modifikatorių.

Pasaulinio kintamojo apibrėžimas

Pasaulinis kintamasis yra deklaruojamas ne visose programoje esančiose funkcijose. Skirtingai nuo vietinių kintamųjų, visuotinį kintamąjį galima pasiekti bet kokia programoje esanti funkcija. Pasauliniai kintamieji nėra daug patikimi, nes jų vertę gali pakeisti bet kokia programoje esanti funkcija.

Pasauliniai kintamieji išlieka tol, kol visa programa bus visiškai įvykdyta. Pasauliniai kintamieji išsaugo savo vertes, kol programa bus vykdoma. Taip yra todėl, kad jos yra saugomos fiksuotame atminties regione, kurį sprendžia kompiliatorius.

Visuotinis kintamasis yra naudingas situacijose, kai kelios funkcijos pasiekia tuos pačius duomenis. Naudojant didelį skaičių pasaulinių kintamųjų gali kilti problemų, nes gali būti nepageidaujamų pokyčių visuotinio kintamojo verte.

Pagrindinis skirtumas tarp vietinio ir globalinio kintamojo.

  1. Vietiniai kintamieji vadinami „vietiniais“, nes jie yra žinomi tik toms funkcijoms, kurios yra deklaruotos ir nėra žinomos jokiai kitai funkcijai, esančiai už šios funkcijos bloko. Pasaulinio kintamojo atveju jie yra žinomi kiekvienai programoje esančiai funkcijai; todėl jie vadinami „visuotiniais“.
  2. Pasauliniai kintamieji išlaiko savo vertę, kol programa bus vykdymo fazėje, nes jie yra saugomi fiksuotoje vietoje, kurią nusprendžia kompiliatorius. Vietiniai kintamieji yra saugomi kamino; taigi, jie nepraranda savo vertės kaip „stack“ yra dinamiškas, tačiau kompiliatorius gali būti nukreiptas išlaikyti savo vertę, naudojant „statinį“ modifikatorių.
  3. Jei visuotinis ir vietinis kintamasis yra deklaruojamas tuo pačiu pavadinimu, visi kodo bloko, kuriame deklaruojamas vietinis kintamasis, teiginiai bus susiję tik su vietiniu kintamuoju ir neturės jokio poveikio pasauliniam kintamajam.
  4. Vietinis kintamasis sunaikinamas, kai programos išeina iš bloko, kuriame deklaruojamas vietinis kintamasis. Tačiau, nutraukus visą programą, pasaulinis kintamasis sunaikinamas.

Išvada:

Rašant programą, abu lygiai taip pat reikalingi vietiniai ir pasauliniai kintamieji. Tačiau, paskelbus didelį pasaulinių kintamųjų skaičių, didelėje programoje gali kilti problemų, nes tai gali sukelti nepageidaujamus pokyčius visame pasaulyje; ir būtų sunku nustatyti, kuri programos dalis padarė tą pakeitimą. Todėl reikėtų vengti nereikalingų pasaulinių kintamųjų.

Top