Kas saame C-s kasutada koos staatilist ja lenduvat?
Kas saame C-s kasutada koos staatilist ja lenduvat?

Video: Kas saame C-s kasutada koos staatilist ja lenduvat?

Video: Kas saame C-s kasutada koos staatilist ja lenduvat?
Video: CS50 2013 - Week 7 2024, Aprill
Anonim

Staatiline muutujad säilitavad oma väärtuse funktsioonikutsete vahel. Muutuv muutujad (mis ei ole vastupidine staatiline ) on kasutatud kui muutuja on kasutatud nii ISR (interrupt service rutiin) kui ka väljaspool seda. Muutuv käsib kompilaatoril laadida muutuja alati RAM-ist, mitte salvestada see CPUregistrisse.

Samamoodi võib küsida, kas me saame kasutada koos staatilist ja lenduvat?

Isegi kui sina juurdepääs a staatiline väärtus läbi mitme lõime, iga lõime saab omama selle kohalikku vahemällu salvestatud koopiat! Selle vältimiseks sa saad deklareerige muutuja kui staatiline lenduv ja see tahe sundige lõime iga kord globaalse väärtuse lugema. Kuid, muutlik ei asenda õiget sünkroonimist!

Samamoodi, miks me kasutame C-s lenduvat? C on muutlik märksõna on määraja, mida rakendatakse muutujale selle deklareerimisel. See ütleb kompilaatorile, et muutuja väärtus võib igal ajal muutuda – ilma, et kompilaatori lähedusest leitud kood midagi ette võtaks. Selle tagajärjed on üsna tõsised.

Arvestades seda, mida tähendab staatiline lenduv C-s?

staatiline viitab muutuja ulatusele. Kui muutuja on globaalne, tähendab see, et ulatus on piiratud lähtefailiga, milles see deklareeriti. Kui muutuja on funktsiooni jaoks lokaalne, tähendab see, et selle muutuja hoidmiseks kasutatav mälu on rakenduse staatiliselt eraldatud mälus.

Kas C-s saame kasutada koos volatile'iga const?

Jah. Muutuja saab kuulutada mõlemaks muutlik ja konstantne sisse C . Konst modifikaator ei luba muutuja väärtust sisemises programmis muuta. Kuid see ei tähenda seda väärtust konst muutujat ei tohiks välise koodiga muuta.

Soovitan: