Funkcje 
Przekazywanie tablic do funkcji

W poniższej deklaracji

void f(int t[5]);

do funkcji f zostanie przesłany adres początku pewnej tablicy. Sama funkcja nie wie, jakiej wielkości jest ta tablica, a podana wielkość nie ma znaczenia.

  • Przesyłając tablicę do funkcji możemy pominąć jej rozmiar
  • Funkcja nie wie, jakiej wielkości jest przesłana tablica. Zwykle przesyła się jej rozmiar w oddzielnym argumencie.

Mogłoby się wydawać, że funkcja powinna móc odczytać wielkość tablicy tylko na podstawie przesłanej tablicy. Pamiętajmy jednak o utożsamieniu tablic i wskaźników. Tak naprawdę funkcja może otrzymać jako argument tablicę, która jest fragmentem innej tablicy - jest to sytuacja bardzo typowa (np. przy sortowaniu)! Oczywiście rozmiar większej tablicy nie będzie poprawnym rozmiarem, który chcielibyśmy przesłać do takiej funkcji.

Przekazując tablicę do funkcji podajemy tylko jej nazwę.

void f(int t[]);
void f(int* t); // to samo co wyżej
 
int tablica[10];
f(tablica);

Przykład - przekazywanie tablicy do funkcji.

Materiały przeznaczone wyłącznie dla studentów
Instytutu Informatyki i Matematyki Komputerowej UJ
Daniel Wilczak