Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
34
3.1.3Kwalifikatorrestrict
ROZDZIAŁ3.ZMIENNEIICHNAZWY
WostatniejkorekciedostandardujęzykaCzostałdodany,wceluumożliwienia
wykonywaniaefektywnychoptymalizacji,kwalifikatorrestrict.Użycietegokwa-
lifikatorawstosunkudowskaźnikaoznacza,żepowiązanieobiektuztakimwskaź-
nikiemjestszczególniemocneiwymaga,bywszelkieodniesieniadotakiegoobiektu
byływykonywane,bezpośredniolubpośrednio,zapomocątakiegowskaźnika.
Przykłademzastosowaniakwalifikatorarestrict,zaczerpniętymz[2],może
byćnastępującasekwencjadefinicji:
intrestricta;
intrestrictb;
externintc[];
Użytywpowyższymprzykładziekwalifikatoroznacza,żejeżelinastąpidostępmo-
dyfikującydopewnegoobiektuprzezktórąkolwiekzezmiennycha,blubc(czyli
żeobiektzostaniewskazanyprzezwskaźniklubskojarzonyztablicą,anastępnie
zmieniony),dostępdotegosamegoobiektuniebędziemógłnastąpićprzezjedną
zpozostałychdwóchzmiennych.
Jeszczelepsząilustracjąużyciakwalifikatorarestrictmożebyćponiższafunk-
cja:
voidf(intn,intrestrictp,intrestrictq){
while(n−−>0){
p++1q++;
}
}
Dziękiużytymkwalifikatoromzapewnionejest,żejeżelidostępdoobiektunastą-
piprzezjedenzparametrówfunkcji,tensamobiektniemożebyćjednocześnie
osiągniętyzapomocądrugiegozparametrów.
3.2
Kwalifikatorymiejsca
Zmiennemogąbyćopatrzonetakżetzw.kwalifikatoremmiejsca,którywrazzkon-
tekstemwystąpieniadeklaracjiokreślamiejsceisposóbprzechowywaniazmiennej
wpamięci.Dojednejzmiennejmożnaużyćtylkojednegokwalifikatoramiejsca.
PoniżejomówionoprzewidzianestandardemANSI/ISOCkwalifikatorymiejsca.
Najbardziejużytecznekombinacjekwalifikatorówmiejscaitypuomówionowpod-
rozdziale3.3.
3.2.1
Zmienneautomatyczneikwalifikatorauto
Zmienneautomatycznetozmiennelokalnewzględemblokuprogramu,wewnątrz
któregozostałyutworzone.Zawartośćtakichzmiennychjesttraconapowyjściu
ztegobloku.Zmiennezadeklarowanewewnątrzdowolnegoblokuprogramu(czyli
pomiędzynawiasamiklamrowymi{})zmiennymiautomatycznymi,jeślinie
poprzedzonekwalifikatoremmiejscalubjeślipoprzedzonekwalifikatoremauto.