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

Wzkazniki- problem ze zrozumieniem 10 odc. kursu pana Mirosława Zelenta.

Object Storage Arubacloud
0 głosów
179 wizyt
pytanie zadane 17 września 2015 w C i C++ przez karoll0 Nowicjusz (120 p.)
edycja 17 września 2015 przez karoll0

Od kilku dni probuje zrozumiec to co sie dzieje w 10 odc. kursu pana Mirosława Zelenta i wciąż nasuwa mi się pare pytań na ,które sam nie potrafię znaleść odpowiedzi. A mianowicie mam pare pytan do tego kodu : http://wklej.org/id/1798455/.

1 Czemu pierwsza pętla jest bez wskaźnika skoro napisaliśmy -"int *tablica" ,a  gwiazdka jest zarezerwowana dla wskażników, czyli tablica powinna być wskaźnikiem.

2 Dlaczego w drugiej pętli jest napisane "w+=50", kiedy wyrzucilem cout'em na ekran cout<<(int)wskaźnik; z "w+=50;"i bez to nic sie nie zmienilo, pojawili się takie same adresy.

3. Czemu kiedy w drugiej pętli chce wyrzucic na ekrac cout<<wskaźnik[i<]<endl; wyskakuja jakies dziwne liczby

W pierwszej kiedy wyrzucę na ekran cout<<tablica[i]<<endl; wyskakuja liczby :50, 51, 52, ... czyli prawidlowo

 

Z góry dziękuję za pomoc i pozdrawiam. :)

 

 

 

 

1 odpowiedź

0 głosów
odpowiedź 17 września 2015 przez Krawiec91 Pasjonat (19,600 p.)

Tablice i wskaźniki to tematy, które mocno się ze sobą łączą.
Przy dynamicznym alokowaniu danych, stosuje się wskaźnik, który przechowuje adres początku przydzielonego bloku pamięci. Nazwa tablicy jest także wskaźnikiem do jej pierwszego elementu.
Na przykładzie Twojego programu, tworząc 3 - elementową tablicę. Wskaźnik na int jest adresem pierwszego elementu tablicy (&tablica[0]). Adresem następnego elementu jest tablica+sizeof(int), a adresem ostatniego elementu tablicy jest tablica+2*sizeof(int).
1. Co do pierwszej pętli, to zastosowano w niej równowazny do wskaźnikowego, sposób zapisu danych to tablicy. Z użyciem wskaźników wyglądałoby, to tak:
 

for (int i=0;i<ile;i++)
{
  *(tablica+i)=i;
  *(tablica+i)+=50;
}

2. W drugiej pętli po zmodyfikowaniu zawartości danego elementu tablicy, inkrementowany jest wskaźnik. Po inkrementacji wskazuje on na następny element tablicy, dzięki temu może zmodyfikować zawartość wszystkich elementów.
3. W pierwszym zapisie do wcześniej utworzonego wskaźnika na int o nazwie tablica, przypisywany jest adres początku przydzielonego bloku pamięci. Następnie tworzysz nowy wskaźnik na int o nazwie wskaznik i do niego przypisujesz adres który przechowuje wskaźnik o nazwie tablica.
W drugim zapisie do utworzonego wskaźnika na int o nazwie wskaznik przypisujesz adres, który przechowuje wskaźnik o nazwie tablica. Następnie do wskaźnika o nazwie tablica zostanie przypisany adres, który zwraca operator new.
W zasadzie przy jednym i drugim zapisie jest praktycznie robione to samo, tylko w różnej kolejności (przypisanie wskaźnika do innego wskaźnika oraz użycie operatora new, który zwraca adres.)
 

Podobne pytania

0 głosów
3 odpowiedzi 1,850 wizyt
+1 głos
2 odpowiedzi 281 wizyt
0 głosów
4 odpowiedzi 392 wizyt
pytanie zadane 12 lipca 2015 w PHP przez Krystian Jędrzejczyk Użytkownik (600 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 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!

...