Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Pytanie] Wskaźniki


Rekomendowane odpowiedzi

Opublikowano

Zmienna wskaźnikowa wskazuje na adres w pamięci. Z resztą każda to może robić, ale wskaźniki są bezpośrednio do tego przewidziane. To tylko informacja dla kompilatora. Typ na jaki wskazuje wskaźnik mówi kompilatorowi, i tylko jemu, jak ma interpretować dane pod tym adresem i jak ma wyglądać arytmetyka na tym właśnie wskaźniku. Do dereferencji wskaźnika (wyłuskania danych na jakie wskazuje) służą trzy operatory. W poniższych przykładach x jest wskaźnikiem.

*x ------- zwykła dereferencja, zwraca obiekt typu na jaki wskazuje wskaźnik

x[y] ---------- zwraca obiekt typu na jaki wskazuje wskaźnik+y*sizeof(typ)

x->y -------- jeśli x jest wskaźnikiem na obiekt klasy/struktury/enuma/enum class to użycie operatora -> wyłuskuje y składową tego obiektu

Przykłady

int* x = new int(128); // zmienna x wskazuje na miejsce w pamięci, gdzie jest obiekt typu int
int b = *x; //do zmiennej b przypisujemy wartość na którą wskazuje wskaźnik x
Zwróć uwagę na typy. Dereferencja typu int* (tylko pierwszym i drugim sposobem) zwraca typ int. typu double* typ double.

Na mój rozum, wskaźniki trzeba interpretować jako osobny typ, a nie tylko int z gwiazdką.

Drugi i trzeci sposób działa podobnie jak ten na przykładzie tylko wykorzystuje się je w innych sytuacjach.

 

Jest też operator wyłuskania adresu &. Działa odwrotnie do operatora *.

Gdy użyjesz go na typie int dostaniesz int*, gdy na double dostaniesz double*.

 

Prościej się nie da chyba.

Opublikowano

Z tego co pamiętam jak kolega wyżej podawał kod to gdy teraz zmienisz liczbe dla X zmieni się odrazu ona dla b albo odwrotnie, ale moge sie mylić dawno nie bawiłem sie c++ :) (PHP <3 )

hcq0.png


Opublikowano

Z tego co pamiętam jak kolega wyżej podawał kod to gdy teraz zmienisz liczbe dla X zmieni się odrazu ona dla b albo odwrotnie, ale moge sie mylić dawno nie bawiłem sie c++

Nie. Tam nie wynikają żadne zależności.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...