MUISTIMÄÄRITTEET

Muuttujien määrittelyssä muistimäärite voi olla jokin seuraavista:

auto määrittelee muuttujan paikalliseksi
register määrittelee muuttujan paikalliseksi ja kehoittaa kääntäjää toteuttamaan sen koneen registereillä
extern määrittelee muuttujan globaaliksi
static määrittelee muuttujan staattiseksi

Mikäli muistimäärite puuttuu, niin kääntäjä käyttää oletusmääritettä extern paitsi funktioiden sisällä olevissa määrittelyissä, joissa oletusmääritteenä on auto. Tästä johtuen määritettä auto ei yleensä kirjoiteta näkyviin.


PAIKALLISET MUUTTUJAT

Paikallisia muuttujia voi määritellä funktion rungossa. Ne ovat käytettävissä vain kyseisen funktion sisällä, ja niiden arvot tulevat määrittelemättömiksi poistuttaessa funktiosta. Ne eivät säilytä arvoaan kutsukerrasta toiseen. Järjestelmä luo automaattisesti muuttujat funktioon tultaessa ja tuhoaa ne funktiosta poistuttaessa.

REKISTERIMUUTTUJAT

Rekisterimuutujat eroavat automaattisista muuttujista sikäli, että kääntäjä sijoittaa muuttujat koneen rekistereihin ja rekisterimuuttujan osoitetta ei voida muodostaa ( ilmaus &x ei ole sallittu, jos x on rekisterimuuttuja )

GLOBAALIT MUUTTUJAT

Globaalien muuttujien määrittelyt sijaitsevat kaikkien funktioiden ulkopuolella. Järjestelmä varaa globaaleille muuttujille tilan staattisesti ohjelman suorituksen alussa. Missä tahansa funktiossa voidaan käsitellä globaalia muuttujaa, kunhan funktiossa on sille extern-määrittely.

STAATTISET MUUTTUJAT

Staattiset muuttujat ovat tilanvarauksen suhteen samanlaisia kuin globaalit, mutta staattiset muuttujat ovat käytettävissä:

• vain kyseisen funktion sisällä, jos se määritellään funktion rungossa (paikalliseksi staattiseksi muuttujaksi)
• vain sen ohjelmatiedoston loppuosassa, jossa määrittely esiintyy, jos määrittely on funktioiden ulkopuolella (kyseessä on globaali staattinen muuttuja).