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.
• 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).