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

C pointer struct

VPS Starter Arubacloud
0 głosów
215 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 (349,740 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 120 wizyt
pytanie zadane 12 października 2018 w SPOJ przez Jason_Nr_1 Bywalec (2,980 p.)
+2 głosów
3 odpowiedzi 750 wizyt
pytanie zadane 22 lutego 2021 w HTML i CSS przez Darek Kurc Nowicjusz (190 p.)
0 głosów
1 odpowiedź 342 wizyt
pytanie zadane 29 czerwca 2018 w HTML i CSS przez nowakos Nowicjusz (140 p.)

93,012 zapytań

141,977 odpowiedzi

321,266 komentarzy

62,354 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...