Tablice dynamiczne

Tablice statyczne muszą mieć zadeklarowany stały rozmiar. Bardzo często spotykamy się z sytuacją, kiedy nie jest znany rozmiar tablicy (tzn. np. jest zmienną wczytywaną w programie). Wtedy musimy użyć zmiennych dynamicznych. Podczas deklaracji tablicy deklarujemy tylko wskaźnik do tablicy – czyli adres do jej pierwszego elementu. Dopiero później przydzielamy do wskaźnika potrzebną ilość pamięci, posługując się operatorem new. Oto kawałek programu zawierający deklarację zmiennej dynamicznej o nazwie tab, będącą tablicą jednowymairową n elementów typu integer:

         int *tab, n;

cout<<"Podaj rozmiar tablicy"<<endl;

cin>>n;

tablica = new int [n];      //podajemy typ elementu i jego rozmiar

......

.......

........

delete [ ] tab;          kasujemy tablicę, jeśli jest niepotrzebna (zwalniamy pamięć)


A tak będzie wyglądała deklaracja i przydział pamięci dla tablicy dwuwymiarowej:

#include <iostream.h>

#include <stdlib.h>

 

int main()

{

    randomize();

         int **wsk;

         int i, j, n1=3000, n2=3000;

         wsk=new int*[n1];

         for (i=0; i<n1; i++)

             wsk[i]=new int[n2];

        for (i=0; i<n1; i++)

      {

          for (j=0; j<n2; j++)

         {

           wsk[i][j]=rand()%10;

           cout<<wsk[i][j]<<" ";

         }

        cout<<endl;

       }     

      system("PAUSE");

      return 0;

}