Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Podstawoweelementyikonstrukcje
1.6.
Stałeizmienne
19
Zmiennajestobiektem(nazwanymobszarempamięci),którymożeprzyjmowaćróżne
wartościzezbiorudopuszczalnychdlatypuzmiennejwartościwfaziewykonaniaprogramu.
Możnarównieżokreślićjakosymbolicznąnazwępewnegoobszarupamięciozmiennej
zawartości.Wymieńmyatrybutyzmiennej:
typsposóbinterpretacjizawartościobszarupamięciprzeznaczonegonazmienną,
nazwaciągznakówbędącyidentyfikatoremzmiennejwprogramie,
adresliczba(zwyklewpostaciszesnastkowej)określającapoczątekobszarupamięci,
przeznaczonegonazmienną,
wartośćwpisanydoomawianegoobszarupamięciciągbitów,
rozmiarotrzymanazapomocąoperatorasizeofwielkośćobiektu.
Zmiennąwprowadzasięzapomocądeklaracjilubdefinicji.Deklaracjawprowadzana-
zwęityp(awięcsposóbinterpretacji)zmiennej,aleniealokuje(nieprzydziela)dlaniejpa-
mięci.Definicjajestdeklaracją,któraalokujepamięćużywanąprzezzadeklarowanązmienną.
Deklaracjaniepoprzedzonasłowemkluczowymexternjestjednocześniedefinicją.
Wmiejscudeklaracjizmiennejmożemyjejnadaćwartośćpoczątkową.Jeżelideklaracje
zmiennychwystępująwblokufunkcji(tzn.międzyotwierającymnawiasemklamrowym{ain-
strukcjąreturn),tooneprywatnelublokalnedlatejfunkcji,azmiennenazywamyauto−
matycznymi.Ponieważfunkcjajestużywanaprzezjejwywołanie(wówczaswykonywanyjest
blokfunkcji),zmienneautomatycznetworzonepowywołaniufunkcji,cooznacza,żewów-
czasjestdlanichalokowanapamięć.Ztegowynika,żedeklaracjezmiennychwblokufunkcji
jednocześnieichdefinicjami.Jeżelideklaracjezmiennychwystępująnazewnątrzwszystkich
tzw.przestrzeninazw,bloków,deklaracjiidefinicjifunkcjiorazklas,tomajązasięgglobalny.
Ichdeklaracjestająsięwtedytakżedefinicjami,ponieważkompilatorprzydzielaimpamięć
oraznadajezerowewartościpoczątkowe.Składniajęzykapozwalatakżedeklarowaćwięcejniż
jednązmiennąwtejsamejdeklaracji.
$Uwaga!WjęzykuC++zasięgglobalnymożebyćpodzielonynaÑpodzasięgiî,nazywane
przestrzeniaminazw.Wkażdejprzestrzeninazwmożnaumieszczaćdeklaracjeidefini-
cje,którychzasięgniewychodzipozaobejmującąjeprzestrzeńnazw.Każdaimplemen-
tacjajęzykazawierapredefiniowanąprzestrzeńnazwstd,wktórejzawartewszystkie
wielkościzadeklarowanewplikachnagłówkowychbibliotekistandardowej.
Stałamożewprogramiewystępowaćwpostaciliterału,tj.wartościnienazwanej(litera-
łemnazywamyjawnąwartośćpewnegotypu,np.liczbę123lubznakćA’),albowpostaci
stałejnazwanej.Stałanazwanapodeklaracji,wktórejprzypisanojejwartośćniemoże
zmienićtejwartościwcałymcyklużyciaprogramu.Stałenazwanewprowadzasięjakozmien-
nezkwalifikatoremconstlubdyrektywami#define.Obiektzkwalifikatoremconstjestniemo-
dyfikowalny,alepozatymjesttraktowanyjakkażdainnazmienna.
Każdastałaizmiennajestpewnegotypu,wbudowanegolubzdefiniowanegoprzezużyt-
kownika.Wyróżniasięstałeizmienne:całkowite,zmiennopozycyjne,znakowe,wyliczeniowe
oraznapisowe.