for ( i=0 ; i<5 ; i++ ) T[i]=i*i;
W języku C++ indeks tablicy zawsze zaczyna się od 0. Tak więc w rozważanym przykładzie T[4] jest ostatnim elementem tablicy (a nie T[5]!!!).
Można też tworzyć tablice dwu- i więcej wymiarowe. Na przykład
double A[10][10];
jest deklaracją tablicy dwuwymiarowej o rozmiarze 10x10.
Przykład: tab.cpp.
char z='a'; char Tekst[]="Abc";Instrukcje te deklarują zmienną znakową z, oraz łańcuch znaków Tekst, oraz inicjują je. Wtedy T[0]='A', T[1]='b', T[2]='c' oraz T[3]='\0' (znacznik końca łańcucha).
W C i C++
typ znakowy jest typem całkowitym,
tzn. zmienne znakowe można traktować tak jak liczby
całkowite równe ich kodom ASCII. Zatem
cout << (int)'A';
spowoduje wypisanie kodu znaku A.
Instrukcja (int)'A' powoduje
zrzutowanie wartości typu char na typ int.
Ponadto na zmiennych znakowych można wykonywać działania
arytmetyczne. Np.
char x='a', y='f';
x++;
y=y+'A'-'a';
Po tych instrukcjach zmienna x jest równa 'b',
zaś y jest równa 'F' (w zmiennej y litera została zamieniona na dużą).
Przykład: tab2.cpp.
Należy pamiętać, że standardowo w C/C++ nie ma kontroli dostępu do tablic.
Jeśli odwołujemy się do elementu tablicy który nie istnieje np:
const int TAB_SIZE=100;
int main(){
int T[TAB_SIZE];
int n=5000;
T[n]=0;
return 0;
}
To odwołanie do nieistniejącej komórki
nie zostanie zasygnalizowane w fazie kompilacji, a w fazie wykonania może przynieść nieoczekiwane efekty.
Najprzyjemniejszym jest komunikat systemowy:
Naruszenie ochrony pamięciW systemie SPOJ błąd ten jest sygnalizowany przez komunikat:
runtime error (SIGSEGV).