32 lines
2.0 KiB
Plaintext
32 lines
2.0 KiB
Plaintext
\b;Tablice
|
|
Tablica jest zestawem obiektów tego samego typu lub klasy. W języku CBOT można używać N wymiarowych tablic. Każdy wymiar jest ograniczony do 9999 elementów. Aby zadeklarować tablicę, należy użyć nawiasów kwadratowych \c;[]\n; po nazwie zmiennej lub nazwie typu.
|
|
\c;
|
|
\s;int [ ] a; // tablica typu int
|
|
\s;int a [12]; // tablica typu int ograniczona do 12 elementów
|
|
\s;string s[3]; // tablica 3 elementów typu string
|
|
\s;float xy[][]; // 2 wymiarowa tablica typu float
|
|
\n;
|
|
W rzeczywistości, gdy interpreter języka CBOT napotka deklarację tablicy, tworzy jedynie \l;wskażnik\u cbot\pointer; \c;\l;null\u cbot\null;\n;:
|
|
\c;
|
|
\s;int a[5]; // jest teraz wskaźnikiem null
|
|
\n;
|
|
Z chwilą wstawienia wartości do tablicy, tworzone są elementy i inicjalizowany jest wskaźnik:
|
|
\c;
|
|
\s;a[2] = 213; // tablica a wskazuje na
|
|
\s; // 3 elementy: [0], [1] i [2]
|
|
\n;
|
|
Po tej operacji, zmienna \c;a\n; zawiera wskaźnik do elementów tablicy. Elementy \c;[0]\n; i \c;[1]\n; są tworzone, ale nie inicjalizowane, gdyż tablica nie może zawierać pustych elementów. Instrukcja \c;\l;sizeof\u cbot\sizeof;\n; umożliwia sprawdzenie liczby elementów tablicy.
|
|
|
|
Gdy określony jest rozmiar maksymalny deklarowanej tablicy, program zatrzyma się w przypadku próby dostępu poza tablicę. Błąd ten nie jest sygnalizowany podczas kompilacji, nawet jeśli jest oczywisty:
|
|
\c;
|
|
\s;{
|
|
\s; int a[5];
|
|
\s; a[7] = 123; // nie ma błędu podczas kompilacji
|
|
\s; // ale pojawia się podczas działania programu
|
|
\s;}
|
|
\n;
|
|
Jeśli tablica przekazywana jest jako parametr \l;funkcji\u cbot\function;, funkcja otrzymuje jedynie \l;wskaźnik\u cbot\pointer; do tablicy. Oznacza to, że w przypadku modyfikacji elementu tablicy wewnątrz funkcji, zostanie w rzeczywistości zmodyfikowany element tablicy przekazanej funkcji jako parametr.
|
|
|
|
\t;Zobacz również
|
|
\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
|