38921

38921



10


ROZDZIAŁ 7. ZMIENNE

Modyfikatory

volatile

volatile znaczy ulotny. Oznacza to, żc kompilator wyłączy dla takiej zmiennej optymalizacje typu zastąpienia przez stalą lub zawartość rejestru, za to wygeneruje kod, który będzie odwoływał się zawsze do komórek pamięci danego obiektu. Zapobiegnie to błędowi, gdy obiekt zostaje zmieniony przez część programu, która nk* ma zauważalnego dla kompilatora związku z danym fragmentem kodu lub nawet przez zupełnie inny proces.

volatile float liczbal; float liczba2;

{

printf ("%d\n%d", liczbal, liczba2);

/* instrukcje nie związane ze zmiennymi */ printf ("ŹCdNniid", liczbal, liczba2);

>

Jeżeli zmienne liczbal i liczba2 zmienią się niezauważalnie dla kompilatora to odczyt tyąc :

•    liczbal - nastąpi odwołanie do komórek pamięci. Kompilator pobierze nową wartość zmiennej.

•    Iiczlm2 kompilator może wypisać poprzednią wartość, którą przechowywał w rejestrze.

Modyfikator volatile jest rzadko stosowany i przydaje się w wąskich zastosowaniach, jak współbieżność i współdzielenie zasobów oraz przerwania systemowe.

register

Jeżeli utworzymy zmienną, której będziemy używać w swoim programie bardzo często, możemy wykorzystać modyfikator register. Kompilator może wtedy umieścić zmienną w rejestrze, do którego ma szybki dostęp, co przyśpieszy odwołania do tej zmiennej

register int liczba ;

W nowoczesnych kompilatorach ten modyfikator praktycznie nie ma wpływu na program. Optymalizator sam decyduje czy i co należy umieścić w rejestrze. Nie mamy żadnej gwarancji, żc zmienna tak zadeklarowana rzeczywiście się tam znajdzie, chociaż dostęp do niej może zostać przyspieszony w inny sposób. Raczej powinno się unikać tego typu konstrukcji w programie.

static

Pozwala na zdefiniowanie zmiennej statycznej. “Statyczność” polega na zacłiowaniu wartości pomiędzy kolejnymi definicjami tej samej zmiennej. Jest to przede wszystkim przydatne w funkcjach. Gdy zdefiniujemy zmienną w ciele funkcji, to zmienna ta będzie od nowa definiowana wraz z domyślną wartością (jeżeli taką podano). W wypadku zmiennej określonej jako statyczna, jej wartość się nk* zmieni przy ponownym wywołaniu funkcji. Na przykład:



Wyszukiwarka

Podobne podstrony:
I. Pamięć RAMPamięci półprzewodnikowe Pamięci RAM są pamięciami ulotnymi. Oznacza to, że dane są
PwTiR174 346 Rozdział 10 ści kontraktowej ustalone w kodeksie cywilnym. Stwarza to możliwość umowneg
10 Rozdział I. Zagadnienia ogólne szym uproszczeniu - oznacza stabilność i harmonijność danego organ
MATEMATYKA078 148 Ul. Rachunek różniczkowy Oznacza to, że stosując wzór (4 3) dla f(x) = sinx wystar
63 2(1) niż 2,0. Oznacza to, że zamiast przewidzianej dla zespołów komputerowych stawki 30% może być
10 Porfiryny, transport gazów? 37.    Co oznacza przesunięcie krzywej oksydacji tlenu
skanuj0265 274 Oznacza to, żc przy wyższym poziomic płac pracodawcy będą zatrudniać mniej pracownikó
10 Porfiryny, transport gazów? 37.    Co oznacza przesunięcie krzywej oksydacji tlenu
skanuj0332 (3) Rozdział 12. ♦ Tworzenie bazy w praktyce 347 oznaczać to będzie, że Jan Kowalski, And
PwTiR169 336 Rozdział 10 zajęć lub imprezy rekreacyjnej. Odnosi się to w szczególności do turystyki
skan0032 7Hh stąd wynika, żo W 5B 01 Jest jego rozwiązaniem. Zgodnie ze wzorem (2.10.5) oznacza to,

więcej podobnych podstron