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

Rzutowanie wskaźnika?

Object Storage Arubacloud
0 głosów
2,535 wizyt
pytanie zadane 11 lutego 2018 w C i C++ przez Hiskiel Pasjonat (22,830 p.)
Witam! Spotkałem się z takim zapisem:

[...] (SOCKADDR*)sock [...]

 

Co on oznacza?

2 odpowiedzi

0 głosów
odpowiedź 11 lutego 2018 przez Knayder Nałogowiec (37,640 p.)
że sock, zostanie przerzutowany na SOCKADDR*
0 głosów
odpowiedź 11 lutego 2018 przez Sebastian Fojcik Nałogowiec (43,020 p.)
edycja 11 lutego 2018 przez Sebastian Fojcik

Słusznie się domyśliłeś. Jest to zwykłe rzutowanie jakiegoś typu na wskaźnik typu SOCKADDR. Przykładowy fragment kodu z użyciem tego: 

struct SOCKADDR
{
    int pole;
};

int main()
{
    SOCKADDR obiekt;
    void * wsk1 = &obiekt;
    SOCKADDR * wsk2 = (SOCKADDR*)wsk1;
    // Wspolczesna zalecana wersja
    SOCKADDR * wsk2 = reinterpret_cast<SOCKADDR*>wsk1;
}

Niżej pokazuję też rzutowanie przy pomocy specjalnego operatora. Pisząc programy w współczesnym C++ warto stosować te operatory. 

Zapytasz dlaczego. Przecież są długie w zapisie. Odpowiem: i o to właśnie chodzi. reinterpret_cast zawsze oznacza rzutowanie wskaźnika. Z daleka programista widzi co się dzieje w danej linijce kodu. Nie musiałbyś wtedy pisać tego pytania na forum :-)

No i rzutowanie to w ogóle nietypowa operacja i często jest źródłem wszelkiego rodzaju błędów w programach. Dlatego w C++ stosuje się te długie operatory. Pierwszy link z Google: http://strefakodera.pl/programowanie/c/operatory-rzutowania-w-c

komentarz 11 lutego 2018 przez Hiskiel Pasjonat (22,830 p.)
emm...

void *wsk1 [...]

 

Jakim cudem zmienna typu void?
komentarz 11 lutego 2018 przez draghan VIP (106,230 p.)
Nie jest typu void, tylko typu wskaźnikowego - void*. :) Dziedzictwo z C, gdzie jest używane do wprowadzenia swego rodzaju generyczności.
1
komentarz 11 lutego 2018 przez mokrowski Mędrzec (155,460 p.)

@Swipeyro, Traktuj to jako adres. W dodatku adres pozbawiony typu... i tyle (w uproszczeniu i na tym etapie uczenia się języka).

Podobne pytania

0 głosów
1 odpowiedź 505 wizyt
pytanie zadane 11 czerwca 2018 w C i C++ przez Hiskiel Pasjonat (22,830 p.)
0 głosów
2 odpowiedzi 328 wizyt
pytanie zadane 19 maja 2018 w C i C++ przez Mamrotek Nowicjusz (180 p.)
0 głosów
0 odpowiedzi 358 wizyt

92,555 zapytań

141,402 odpowiedzi

319,538 komentarzy

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

...