Przesunięcie wskaźnika w C

0

Witam,
Mam taki problem, że wczytuje do tablicy dynamicznej 1000000 elementów typu unsigned int i chce je sortować po pięć.

while (i + 4 < n)
    {
        tab = tab + i;   // ta linijka wyrzuca błąd
        qsort(tab, 5, sizeof(unsigned int), cmpfunc);
        i += 5;
    }

I po przejściu 31625 elementów wyskakuje mi błąd.
Próbowałem też:

tab = &tab[i];

niestety efekt jest ten sam.

Może ktoś wie czemu tak się dzieje?

4

No ale przecież ty tu robisz off-by-dużo o_O Za KAŻDYM razem przesuwasz tab o kolejne coraz większe liczby. Moze chciałeś jednak zrobić wskaźnik pomocniczy a tab nie ruszać? Albo zawsze dodawać do tab wartość 5? Pomysl chwile co ty robisz!

  • tab wskazuje na indeks 0, i =0
  • tab wskazuje na indeks 0, i=5
  • tab wskazuje na indeks 5, i=10
  • tab wskazuje na indeks 15 (bo 5+10 = 15), i = 15
  • tab wskazuje na indeks 30 (bo 15+15 = 30), i = 20
  • tab wskazuje na indeks 50 (bo 30+20 = 50), i = 25

i tak dalej.

0

Faktycznie, dziękuję ze pomoc.

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