Wpis z mikrobloga

Mirki programistyczne (ʘʘ)
Wskaźniki część druga :D

Tym razem poprosiłbym o przetłumaczenie tego na język ludzki.
Moje notatki na kartce na nic się nie zdadzą - za dużo kreślenia tym razem :)

Coś w rodzaju "do zmiennej c przypisz wartość 11" albo "do zmiennej b przypisz wartość zmiennej pod adresem p1" najlepiej by mi się przyjęło :)

#programowanie #pytaniedoeksperta #informatyka
crushyna - Mirki programistyczne (ʘ‿ʘ)
Wskaźniki część druga :D

Tym razem poprosi...

źródło: comment_OtqsWlunjb9MyduFk82fFd2aHRWUq1Gg.jpg

Pobierz
  • 13
@Kicer86:
może po kolei, coś może źle jarzę
1. zmiennej p1 przypisz wartość = adres zmiennej c
2. zmiennej c przypisz wartość = 11
3. zmiennej b przypisz wartość = zmiennej pod adresem p1 (czyli w sumie czego?)
4. zmiennej c przypisz wartość = 22

Zatrzymując się przy tych 4, już mam wyniki:
b = 11;
c = 22;
*p1 = 22; <<< skąd to nagle się tu wzięło?
@crushyna: tak, tak się właśnie dzieje. p1 trzyma adres zmiennej. Wszelkie operacje na p1 są zatem operacjami na tym adresie. Jak zatem operować na zmiennej pod wskazanym adresem? Stosując tak zwany operator wyłuskania "*". (*p1)++ będzie zatem inkrementacją zmiennej c (jeśli p1 na nią wskazuje)
@Kicer86: no dobra, to jedziemy dalej :P
5. wartość p2 = wartość p1 (czyli p2 również jest odnośnikiem do wartości c?)
6. wartości e przypisz = wskaźnik p2 (czyli j.w., e = 22)
7. wskaźnikowi *p przypisz wartość 45 (ok, tego fragmentu nie czaje. Co się tu stało?)
@crushyna: Trzymaj, może to pomoże.
Dla ułatwienia załóżmy, że adres zmiennej c, to np. 58222;

1. p1 = &c -> do zmiennej p1 przypisz adres zmiennej c (czyli pod p1 masz 58222, a pod *p1 wartość, która znajduję się pod tym adresem, czyli w tym momencie 3);
2. c = 11 (stąd pod *p1 znajduje się teraz 11)
3. b = *p1 -> do zmiennej b przypisz to, na co wskazuje