• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

przypisanie wskaźnikowi wartości 0

0 głosów
546 wizyt
pytanie zadane 4 października 2016 w C i C++ przez Kuba321 Użytkownik (730 p.)

Witam!

Chciałbym się zapytać, dlaczego taki kod zostaje zatrzymany przez system

#include <iostream>

using namespace std;

int main()
{
    int *tablica;
    tablica = new int[5];
    for(int i = 0; i < 5; i++)
    {
        cout << "Podaj liczbe: "<<endl;
        cin >> *tablica;
        tablica++;
    }
    tablica = 0;
    for(int i = 0; i < 5; i++)
    {
        cout << i+1 << ". " << *tablica <<endl;
        tablica++;
    }
    delete [] tablica;
    return 0;
}

a taki działa bez problemu

#include <iostream>

using namespace std;

int main()
{
    int *tablica;
    tablica = new int[5];
    for(int i = 0; i < 5; i++)
    {
        cout << "Podaj liczbe: "<<endl;
        cin >> *tablica;
        tablica++;
    }
    tablica -= 5;
    for(int i = 0; i < 5; i++)
    {
        cout << i+1 << ". " << *tablica <<endl;
        tablica++;
    }
    delete [] tablica;
    return 0;
}

 

1 odpowiedź

+1 głos
odpowiedź 4 października 2016 przez JAKUBW Nałogowiec (33,470 p.)
wybrane 4 października 2016 przez Kuba321
 
Najlepsza
Zmienna tablica to wskaźnik, ustawienie go na 0 to tak jak być ustawił na null,czyli na nic. Nie możesz odczytać z zerowego wskaźnika. A -= 5 przestawia go o 5 * sizeof(int) bajtów w tył(czyli 20 bajtów w tył).
komentarz 4 października 2016 przez Kuba321 Użytkownik (730 p.)
A czy jest jeszcze jakaś inna metoda, by przestawić wskaźnik na pierwsze pole tablicy?
komentarz 4 października 2016 przez JAKUBW Nałogowiec (33,470 p.)
Nie, a przynajmniej mi o tym nie wiadomo.
1
komentarz 4 października 2016 przez unknown Nałogowiec (39,560 p.)
Po zaalokowaniu pamięci przy użyciu new najlepiej w ogóle nie ruszać wskaźnika. A jeszcze lepiej używać smart pointer'ów.

Podobne pytania

0 głosów
2 odpowiedzi 909 wizyt
0 głosów
2 odpowiedzi 362 wizyt
pytanie zadane 3 sierpnia 2016 w C i C++ przez rattle Użytkownik (510 p.)
+4 głosów
2 odpowiedzi 861 wizyt
pytanie zadane 2 stycznia 2016 w C i C++ przez obx88 Nowicjusz (160 p.)

93,775 zapytań

142,731 odpowiedzi

323,383 komentarzy

63,379 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...