Rozmiar tablicy

0

Witajcie. Zastanawiam się jak sprawdzić ilość elementów tablicy i znalazłem na necie takie cos:
sizeof(tab) / sizeof(int)
W funkcji main wszystko ładnie działa, ale gdy chcę tego użyć w funkcji już nie bardzo :

 int sizeTab(int *tab)
{
	return sizeof(tab) / sizeof(int);
}

Cóż myślę, że dlatego iż przekazuję tablicę przez funkcje i sizeof(tab) działa tylko na pierwszy element tej tablicy.
Jak zrobić to w funkcji ? Potrzebna mi taka funkcja aby nie powtarzać po stokroć tego samego w majnie ;d

0

tak tego nie zrobisz. Przekazujesz wskaźnik, więc sizeof zwraca ci rozmiar wskaźnika. W c++ nie ma takiej opcji aby przekazać zwykłą tablice do funkcji i wyliczyć jej rozmiar.

0

Proponuje zainteresować się klasą std::vector. To taka tablica ale z dynamicznym rozmiarem, możliwością poznania jej rozmiaru i innymi przydatnymi właściwościami.

0

ewentualnie zdefiniuj sobie odpowiednie makro

3

W c++ nie ma takiej opcji aby przekazać zwykłą tablice do funkcji i wyliczyć jej rozmiar.
ORLY? ;-)

template <int N> int get_array_length(const int (&arr)[N])
{
    return N;
}
 
int main()
{
    int tab[16];
    cout << get_array_length(tab) << endl;
}

z oczywistych powodów nie zadziała dla tablic alokowanych dynamicznie, bo te są tylko wskaźnikami.

1 użytkowników online, w tym zalogowanych: 0, gości: 1