Tablica statyczna to tak na prawdę adresy ułożone obok siebie, jednak to o czym będę pisał dotyczy również tablic dynamicznych. Przypominam również, że nazwa tablicy jest jednocześnie adresem jej pierwszego elementu. Tak więc, jeżeli do nazwy tablicy "dodamy" jeden to otrzymamy adres drugiego jej elementu. Wykorzystując tą zależność oraz znając wielkość tablicy możemy bez problemu przesłać ją jako argument funkcji po przez wskaźnik na jej pierwszy element (nazwa tablicy). Ponad to można sobie pewne zapisy uprościć:
int Tab[4]; //Tworzymy prostą cztero-elementową tablicę intów
*Tab=1; //Ustawiamy wartość pierwszego elementu na jeden
*(Tab+1)=3; //Ustawiamy wartość drugiego elementu na trzy (jak widać jest to trochę niewygodne).. uprośćmy to x)
Tab[2]=5; //Ustawiamy wartość trzeciego elementu tablicy na pięć..
tak na prawdę zapis ten jest równy zapisowi *(Tab+2)=5; Jednak ten sposób jest zdecydowanie wygodniejszy.
A oto prosty przykład:
#include <iostream>
bool IsEven(int a) //Sprawdza, czy liczba jest parzysta
{
return (a%2==0);
}
int CheckTable(int *Tab, int TabSize) //Zwraca ilość parzystych liczb w tablicy
{
int Num=0;
for(int i=0; i<TabSize; i++)
{
if(IsEven(Tab[i])) Num++;
}
return Num;
}
int main()
{
int Tab[10]={1,2,3,4,5,6,7,9,11,23};
std::cout<<CheckTable(Tab, 10);
}