Tablice to uporządkowane zbiory danych i występują praktycznie w każdym języku. Tablice w C++ są dość dobrze "rozbudowane". Mogą to być tablice statyczne bądź dynamiczne. Teraz zajmiemy się prostymi tablicami statyczynimi, czyli tablicamy o rozmiarze znanym (i stałym) przed wykonaniem programu. Tablice można definiować na kilka sposobów:
const int N = 20;
int tab1[100],
tab2[N],
tab3[] = {1, 2, 3, 4, 5 },
tab4[5] = {1, 2};
Tab1 tworzy tablicę zawierającą 100 elementów,
tab2 20 elementową - ilość elementów pochodzi ze zmiennej o stałej wartości (const). Użycie zwykłej zmiennej zakończyłoby się błędem.
tab3 utworzy 5-elementową tablicę o podanych wartościach,
tab4 pięcioelementową tablicę, gdzie pozostałe, niezadeklarowane wartości będą zerami.
Jeszcze jedna sprawa - typ
int - oznacza to że tworzymy np. dla tab1 100 elementową tablicę danych typu int.
Funkcja
sizeof(tablica) zwróci rozmiar tablicy w bajtach a znając rozmiar bajtowy użytego typu danych da nam liczbę elementów:
sizeof(tab) / sizeof(int)
Jeżeli przesyłamy tablicę do funkcji to tak naprawdę przesłany zostanie wskaźnik do tej tablicy, co dodatkowo wymusza przesłanie jej rozmiaru.
#include<iostream>
using namespace std;
void funkcja(double tab[])
{
cout << "Funkcja : Wymiar w bajtach tab: " << sizeof(tab) << endl;
cout << "Funkcja : Wartość *tab - pierwszy element: " << tab[0] << endl;
}
int main()
{
double tab[] = {5, 7, 33, 44, 1};
cout << "Wymiar w bajtach tab: " << sizeof(tab) << endl;
cout << "Wartość *tab - pierwszy element: " << *tab << endl;
funkcja(tab);
}
Co da nam:
Wymiar w bajtach tab: 40
Wartość *tab - pierwszy element: 5
Funkcja : Wymiar w bajtach tab: 4
Funkcja : Wartość *tab - pierwszy element: 5
Wymiar w bajtach: 5 elementów po 8 bajtów daje 40, lecz w funkcji do której tablica została przesłana wyszło 4 - rozmiar wskaźnika. Jak widać nie wpłynęło to na dane tablicy. Pierwszy element w obu przypadkach jest taki sam.
#include<iostream>
using namespace std;
int main()
{
char tab1[] = "Mlotek";
char tab2[] = {'M', 'l', 'o', 't', 'e', 'k', ' '};
cout << "Wymiar w bajtach tab1: " << sizeof(tab1) << endl;
cout << "Wymiar w bajtach tab2: " << sizeof(tab2) << endl;
cout << "Wartość *tab1 - pierwszy element: " << *tab1 << endl;
}
W tym przykładzie tablice zawierają dane typu char czyli są literałami. Obie tablice mają taki sam rozmiar - 7 (mimo iż w tab1 mamy 1 wyraz). Znak
oznacza koniec zapisu i w przypadku pierwszej tablicy dodawany jest automatycznie.
- Dodane: 14.07.2008 przez riklaunim