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żnająrównieżokreślićjakosymbolicznąnazwępewnegoobszarupamięciozmiennej
zawartości.Wymieńmyatrybutyzmiennej:
•
typ–sposóbinterpretacjizawartościobszarupamięciprzeznaczonegonazmienną,
•
nazwa–ciągznakówbędącyidentyfikatoremzmiennejwprogramie,
•
adres–liczba(zwyklewpostaciszesnastkowej)określającapoczątekobszarupamięci,
przeznaczonegonazmienną,
•
wartość–wpisanydoomawianegoobszarupamięciciągbitów,
•
rozmiar–otrzymanazapomocą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),tosąoneprywatnelublokalnedlatejfunkcji,azmiennenazywamyauto−
matycznymi.Ponieważfunkcjajestużywanaprzezjejwywołanie(wówczaswykonywanyjest
blokfunkcji),zmienneautomatycznesątworzonepowywołaniufunkcji,cooznacza,żewów-
czasjestdlanichalokowanapamięć.Ztegowynika,żedeklaracjezmiennychwblokufunkcji
są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órejsązawartewszystkie
wielkościzadeklarowanewplikachnagłówkowychbibliotekistandardowej.
Stałamożewprogramiewystępowaćwpostaciliterału,tj.wartościnienazwanej(litera-
łemnazywamyjawnąwartośćpewnegotypu,np.liczbę123lubznakćA’),albowpostaci
stałejnazwanej.Stałanazwana–podeklaracji,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.