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

c++ wskaźnik nie pokazuje wpisanej wartości

Object Storage Arubacloud
+2 głosów
422 wizyt
pytanie zadane 8 sierpnia 2017 w C i C++ przez Huberti Gaduła (4,500 p.)

Witam, dlaczego wskaźnik nie pokazuje wpisanej liczby?

Kod:

#include <iostream>

using namespace std;

int main()
{
    int ile;
    cin>>ile;
    int tablica[ile];
    int *wskaznik;
    wskaznik = tablica;
    for(int i=0;i<ile;i++)
    {
        cin>>*wskaznik;
        *wskaznik++;
    }
    cout<<*wskaznik;

    return 0;
}

 

2 odpowiedzi

+3 głosów
odpowiedź 8 sierpnia 2017 przez criss Mędrzec (172,590 p.)
wybrane 8 sierpnia 2017 przez Huberti
 
Najlepsza

Bo go przesuwasz. Po każdej iteracji przesuwasz wskaźnik o 1 (15. linia). Może spodziewałeś się inkrementacji inta wskazywanego przez wskaźnik, ale w rzeczywistości przesuwasz wskaźnik. Wynika to z pierwszeństwa operatorów. Tym samym operator dereferencji (gwiazdka) w tej samej linii jest bez znaczenia.
Jeśli pozwoliłbyś na inkrementacje wskaźnika tylko do tego momentu, żeby nie wyszedł poza zakres tablicy (np. jeśli i != ile-1), to w momencie ostatniego cout-a wskazywałby na ostatni element i wyświetli ci się ostatnia wpisana liczba.

komentarz 8 sierpnia 2017 przez Huberti Gaduła (4,500 p.)

Dziękuję za bardzo pomocna odpowiedź. Wcześniej nie zdawałem sobie sprawy z pierwszeństwa operatorów. Zapamiętam na przyszłość. wink

–6 głosów
odpowiedź 8 sierpnia 2017 przez Farmer Obywatel (1,150 p.)
a skąd on ma wziąć tą zmienną "ile"?
komentarz 8 sierpnia 2017 przez Farmer Obywatel (1,150 p.)
i zmiennych nie robimy w pętli tylko powyżej instrukcji "main" wstaw je tam dla pewności
komentarz 8 sierpnia 2017 przez Farmer Obywatel (1,150 p.)
pomiędzy "using namespace" a "int main()"
komentarz 8 sierpnia 2017 przez Huberti Gaduła (4,500 p.)
edycja 8 sierpnia 2017 przez Huberti
Po co mi zmienne globalne dla jednej funkcji?
komentarz 8 sierpnia 2017 przez Farmer Obywatel (1,150 p.)
nwm ja wole globalne no ale o gustach sie nie gada :)

może wskaźnik?
3
komentarz 8 sierpnia 2017 przez criss Mędrzec (172,590 p.)

i zmiennych nie robimy w pętli tylko powyżej instrukcji "main" wstaw je tam dla pewności
pomiędzy "using namespace" a "int main()"

 Uhm..? To nie jest gust, tylko szerzenie złych praktyk.

komentarz 8 sierpnia 2017 przez unknown Nałogowiec (39,560 p.)
Ktoś tu chyba przed chwilą obejrzał 1 odcinek kursu C++ MZ i chce się pochwalić zdobytą wiedzą
1
komentarz 8 sierpnia 2017 przez Huberti Gaduła (4,500 p.)
edycja 8 sierpnia 2017 przez Huberti

nwm ja wole globalne no ale o gustach sie nie gada :)

W tym programie umiejscowienie zmiennych faktycznie jest kwestią gustu, ale już w dużych projektach z wieloma funkcjami i procedurami potrafią zaoszczędzić sporo miejsca. 

W skrócie:

Zmienna globalna - widoczna dla wszystkich funkcji w programie.  Pozostaje w pamięci aż do zakończenia programu.

Zmienna lokalna - widoczna tylko dla funkcji w której się znajduje.  Jest niszczona po zakończeniu funkcji.

może wskaźnik?

Zmiana nazwy zmiennej niestety tu nie pomoże. 

Podobne pytania

0 głosów
2 odpowiedzi 6,016 wizyt
pytanie zadane 6 sierpnia 2017 w C i C++ przez Jakub 0 Pasjonat (23,120 p.)
0 głosów
4 odpowiedzi 4,457 wizyt
pytanie zadane 4 kwietnia 2016 w C i C++ przez esp0x309 Użytkownik (510 p.)
0 głosów
0 odpowiedzi 546 wizyt
pytanie zadane 20 maja 2020 w C i C++ przez fortuna Początkujący (310 p.)

92,555 zapytań

141,402 odpowiedzi

319,541 komentarzy

61,939 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...