Tablice statyczne i dynamiczne

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 21907 razy

Tablice umożliwiają przechowywanie danych tego samego typu jako jeden ciąg (łańcuch) danych. Rozróżnia się dwa typy tablic: statyczne - czyli takie, których rozmiaru podczas działania programu nie da się zmienić; oraz dynamiczne - czyli takie, którym pamięć jest przypisywana w trakcie działania programu.

Tablice statyczne

Deklarowanie tablic statycznych może wyglądać następująco:

int array1[]={10,20,30,40,50}; // deklaracja z tablicy statycznej z jednoczesnym ustawieniem jej wartości int array2[5]; // deklaracja tablicy statycznej 5 elementowej for(int i = 0; i < 5; i ++){ // w pętli od 0 do 4 array2[i] = i * 10 + 10; // ustawiam kolejne wartości tablicy statycznej array2 względem indeksu i }

Warto zwrócić uwagę na to, że indeksowanie tablic zaczyna się od 0.

Ciągi znaków również można deklarować w ten sam sposób (ponieważ są one również tablicami):

char str[]="jakiś tekst";

Tablice dynamiczne

Zaletą tablic statycznych jest łatwość ich użycia, natomiast wielką wadą jest brak możliwości sterowania ich rozmiarem, z tego też względu potrzebne są narzędzia umożliwiające dynamiczne deklarowanie tablic. W C++ narzędziem takim jest operator new, który przypisuje do zmiennej wskaźnikowej blok pamięci o określonych rozmiarach. Z kolei operator delete i delete[] umożliwia zwalnianie tejże pamięci.

cout<<"Podaj rozmiar tablicy:"; int arraySize = 0; cin>>arraySize; // wczytywanie rozmiaru tablicy int *array = 0; // wskaźnik tablicy dynamicznej if(arraySize > 0 && arraySize < 100){ array = new int[arraySize]; // deklarowanie pamięci for(int i = 0; i < arraySize; i++){ // w pętli array[i] = i + 1; // wpisuję kolejne numery do tablicy cour<<"array["<<i<<"]="<<array[i]<<"n"; // wypisywanie tablicy na ekranie } delete[] array; // zwalnianie przypisanej pamięci array = 0; // dzięki temu przypisaniu będzie można stwierdzić, że pamięć tej zmiennej została zwolniona }
Propozycje książek