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:
int∗restricta;
int∗restrictb;
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,int∗restrictp,int∗restrictq){
while(n−−>0){
∗p++1∗q++;
}
}
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{})sązmiennymiautomatycznymi,jeśliniesą
poprzedzonekwalifikatoremmiejscalubjeślisąpoprzedzonekwalifikatoremauto.