Przesunięcie wskaźnika w C

Przesunięcie wskaźnika w C
IX
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 6 lat
  • Postów:13
0

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

Kopiuj
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ż:

Kopiuj
tab = &tab[i];

niestety efekt jest ten sam.

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

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
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.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom
IX
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 6 lat
  • Postów:13
0

Faktycznie, dziękuję ze pomoc.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.