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

C pointer struct

Object Storage Arubacloud
0 głosów
175 wizyt
pytanie zadane 15 grudnia 2019 w C i C++ przez user124 Nowicjusz (210 p.)

Jest mi ktoś w stanie wytłumaczyć czemu to działa w ten sposób:
W kroku 3, wskaźnik x->next wskazuje na to samo co wskazuje l->next
I tutaj na obrazku wygląda na to, że w tym przypadku l->next i x->next będą wskazywać na to samo czyli 3
Natomiast w kroku 4 l->next będzie wskazywać na 9, a x->next dalej wskazuje na 3.
Czy nie powinno się to zmienić i x->next powinien wskazywać na to samo co l->next czyli też 3?
To niżej jest na pewno dobrze tylko ja nie potrafię tego do końca zrozumieć...

1 odpowiedź

+1 głos
odpowiedź 15 grudnia 2019 przez adrian17 Ekspert (344,860 p.)
wybrane 15 grudnia 2019 przez user124
 
Najlepsza

Czy nie powinno się to zmienić i x->next powinien wskazywać na to samo co l->next czyli też 3?

Nope.

Może spójrz na to tak: każda z tych linii zmienia wartość jednego wskaźnika (jednej wartości w pamięci). Innymi słowy, w każdym kroku, dokładnie jedna strzałka zmieni swój "cel".

W kroku 3, strzałka przy "0" zmieniła swój "cel" na rzecz na którą wskazuje l->next.

W kroku 4, strzałka przy "7" (bo wskaźnik "l" wskazuje na węzeł z "7") zmienia swój "cel" na rzecz na którą wskazuje x.

 

(Gdyby w kroku 4 strzałka przy "9" miała się zmienić, to gdzieś w tej linii musiałoby być "x->next", bo przed krokiem 4 to był jedyny sposób by dostać się do tej strzałki.)

komentarz 15 grudnia 2019 przez user124 Nowicjusz (210 p.)

Sprawdziłem sobie to jeszcze na wskaźnikach do liczb i faktycznie jest tak jak mówisz
Dziwne trochę, ale wychodzi na to, że w momencie int *x2= x1 to jest przypisana wartość, która posiada x1, a nie faktyczny adres &x1 i pewnie o to się tu rozchodzi tym przykładzie wyżej dobrze to rozumiem?

komentarz 15 grudnia 2019 przez user124 Nowicjusz (210 p.)

I jeszcze takie coś czyli żyłem do tej pory w błędnym przekonaniu, że w trakcie przypisania int x00 = x0 to x00 będzie ciągle miało wartość x0 a to jest tylko coś typu int x00 = 9 i już x00 nie ma więcej styczności z x0 

komentarz 15 grudnia 2019 przez user124 Nowicjusz (210 p.)
Mimo wszystko dzięki za pomoc i wyprowadzenie mnie z błędnego myślenia.

Podobne pytania

0 głosów
0 odpowiedzi 108 wizyt
pytanie zadane 12 października 2018 w SPOJ przez Jason_Nr_1 Bywalec (2,980 p.)
+2 głosów
3 odpowiedzi 603 wizyt
pytanie zadane 22 lutego 2021 w HTML i CSS przez Darek Kurc Nowicjusz (190 p.)
0 głosów
1 odpowiedź 314 wizyt
pytanie zadane 29 czerwca 2018 w HTML i CSS przez nowakos Nowicjusz (140 p.)

92,579 zapytań

141,432 odpowiedzi

319,663 komentarzy

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

...