Prezentowane materiały są przeznaczone dla uczniów szkół ponadgimnazjalnych Autor artykułu: mgr Jerzy Wałaszek |
©2014 mgr
Jerzy Wałaszek
|
Wskaźniki
Informacja przechowywana jest w pamięci RAM w postaci bitów umieszczanych w
komórkach (ang memory cell), których mogą
być miliardy. Aby komputer mógł uzyskiwać w prosty sposób dostęp do każdej
komórki pamięci, zostały one ponumerowane. Numery komórek nazywamy
adresami komórek pamięci
(ang. memory cell address). Poniżej przedstawiamy fragment logicznej
struktury pamięci (czyli tak, jak widzi swoją pamięć
komputer):
Ze względów ekonomicznych poszczególne komórki pamięci przechowują grupę kilku bitów (najczęściej jest ich 8 - czyli 1 bajt, ale rozmiar bitowy komórki pamięci zależy od architektury systemu komputerowego). W przykładzie powyżej komórka o adresie 3 przechowuje 8 bitów o zawartości 11111110. Wskaźnik (ang. pointer) jest zmienną, która przechowuje adres, pod którym w pamięci umieszczone są dane. W języku C++ wskaźniki posiadają typy, mówimy np. o wskaźniku do danych typu int lub o wskaźniku do danych typu double. Typ wskaźnika określa rodzaj wskazywanego obiektu. Wskaźnik definiujemy następująco: typ * wskaźnik;
Przykłady:
int * a;
// zmienna a jest wskaźnikiem do danych całkowitych
ze znakiem
W zmiennej typu wskaźnik umieszcza się zwykle tylko adresy. Zatem instrukcja przypisania ma zwykle postać:
wskaźnik = adres;
Na przykład wskaźnikowi można przypisać adres innej zmiennej wykorzystując operator adresu &:
wskaźnik = & zmienna;
Dostęp do danych zapisanych w pamięci wskazywanej przez wskaźnik uzyskujemy poprzez operator *, który umieszczamy przed zmienną wskazującą:
* wskaźnik - oznacza wskazywany przez wskaźnik obiekt.
* wskaźnik = wyrażenie; // wartość wyrażenia trafi do obiektu wskazywanego przez wskaźnik
|
|||||||||||||||||||||||||||||||||||
Dane dynamiczne
W pamięci komputera możemy rezerwować obszary na przechowywanie danych
określonego typu. Do tego celu służy operator new, który stosujemy w
sposób następujący:
wskaźnik = new typ;
Po wykorzystaniu obszar pamięci można zwrócić do puli systemu za pomocą polecenia:
delete wskaźnik;
Wskaźnik w powyższym poleceniu musi zawierać adres obszaru utworzonego przez new. Zwrócona pamięć może zostać wykorzystana do innych celów.
|
|||||||||||||||||||||||||||||||||||
Tablice dynamiczne
Tablica dynamiczna (ang. dynamic array)
jest tworzona w czasie uruchomienia programu. Jej rozmiar może być
wyliczany. Co więcej, gdy przestanie być potrzebna możemy ją usunąć z
pamięci. Dzięki tym własnościom program efektywniej wykorzystuje zasoby
pamięciowe komputera.
Tworzenie i wykorzystanie tablicy dynamicznej
Odczyt tablicy dynamicznej ze standardowego wejścia
Tablicę dynamiczną można tworzyć z danych odczytanych ze standardowego
wejścia. W tym celu dane te powinny posiadać określoną postać. Umówmy się,
iż pierwsza liczba n będzie określała liczbę komórek tablicy
dynamicznej, a następne n liczb będzie zawartością tych komórek.
Przykładowe dane:
25
76 139 19 25 31 49 93 101 227 38 62 915 428 253 111 9 73 85 52 167 428 239 924 189 332
Skopiuj powyższe dane do schowka. Następnie uruchom poniższy program:
Po uruchomieniu programu klikamy prawym przyciskiem myszki w pasek tytułowy okna konsoli. Z menu wybieramy opcję Edytuj → Wklej (być może trzeba będzie jeszcze wcisnąć klawisz Enter). Dane ze schowka zostaną wklejone do okna konsoli, program je odczyta i przetworzy w tablicy dynamicznej. Ten sposób pozwala nam szybko i wielokrotnie wprowadzać większą porcję danych do programu bez konieczności ich wpisywania z klawiatury. Jeśli danych jest bardzo dużo, to lepszym rozwiązaniem będzie przekierowanie standardowego wejścia. Wyszukaj na dysku katalog, w którym zapisany jest plik programu. Katalog ten będzie w katalogu projektowym pod nazwą bin/Debug - dla wersji uruchomieniowej lub bin/Release - dla wersji ostatecznej. Zapisz w tym katalogu plik z danymi, np. pod nazwą d.txt. Uruchom okno poleceń Windows (w menu Start wybierz opcję Uruchom i wpisz cmd). Za pomocą poleceń cd przejdź do katalogu z programem. Następnie wpisz:
./nazwa_programu < d.txt
Program będzie odczytywał dane z pliku d.txt zamiast z okna konsoli.
Standardowe wyjście również można przekierować do pliku:
./nazwa_programu > out.txt
Teraz program zamiast pisać dane do okna konsoli, umieści je w pliku out.txt. Plik ten można odczytać np. za pomocą notatnika Windows i spokojnie przejrzeć sobie treść - szczególnie przydatne, gdy program produkuje dużo danych i nie mieszczą się one w oknie konsoli. Można jednocześnie przekierować i wejście, i wyjście danych:
./nazwa_programu < d.txt > out.txt
Teraz program odczyta dane z pliku d.txt, a wyniki zapisze w pliku out.txt. Zwróć uwagę, iż w samym programie nie musisz robić
|
I Liceum Ogólnokształcące |
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe