Przesunięcie wskaźnika w C

Odpowiedz Nowy wątek
2017-04-22 18:00

Rejestracja: 4 lata temu

Ostatnio: 1 rok temu

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?

Pozostało 580 znaków

2017-04-22 18:17
Moderator

Rejestracja: 16 lat temu

Ostatnio: 3 godziny temu

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.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
edytowany 1x, ostatnio: Shalom, 2017-04-22 18:18

Pozostało 580 znaków

2017-04-22 19:55

Rejestracja: 4 lata temu

Ostatnio: 1 rok temu

0

Faktycznie, dziękuję ze pomoc.

Pozostało 580 znaków

Odpowiedz

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