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

Wskaźnik void

Object Storage Arubacloud
0 głosów
318 wizyt
pytanie zadane 20 grudnia 2015 w C i C++ przez niezalogowany

Może mi ktoś wyjaśnić czemu to nie działa??

 

#include <iostream>

using namespace std;

int main()
{
    void *a;

    int b=2;

    a=&b;
    cout<<a<<endl; //ta linijka dziala
    cout<<*a<<endl; //ta linijka nie dziala
    return 0;
}

Wyświetla mi się komunikat: 'void*' is not a pointer-to-objet type
przecież to jest zwykły wskaźnik

1 odpowiedź

0 głosów
odpowiedź 20 grudnia 2015 przez Patryk Krajewski Nałogowiec (26,170 p.)
wybrane 21 grudnia 2015
 
Najlepsza

Ponieważ wsk *void pokazuję na miejsce w pamięci gdzie inny wskaźnik. Taka instrukcja: cout << *wsk_void jest niemożliwa musisz napisać:

cout << *(int*)wsk_void << endl;

Napisałem że pokazuję na miejsce w pamięci gdzie inny wskaźnik ale nie musi tu przykład:

int cyfry = 12345;
    void *wsk = &cyfry;

    *(int*)wsk = 666;

    cout << *(int*)wsk << endl;

 

komentarz 20 grudnia 2015 przez draghan VIP (106,230 p.)
Zamysł dobry, tylko żebyś to jeszcze  napisał po polsku... ;)
komentarz 20 grudnia 2015 przez niezalogowany
ok kumam zapis tylko proszę o jeszcze dzwie odpowiedzi czy zamiast (int*) dało to zapisać za pomocą reinterpret_cast, oraz czy warto używać tego rodzaju wskaźnika??
komentarz 20 grudnia 2015 przez draghan VIP (106,230 p.)

Nie powinno się stosować wskaźnika na void, bo jest to niebezpieczne. Jeśli potrzebujesz "uniwersalnego" wskaźnika, użyj dziedziczenia i wskaźnika do klasy bazowej.

Operator reinterpret_cast<>() jest właśnie stworzony do takich kwiatków. :)

komentarz 20 grudnia 2015 przez niezalogowany
to jak reinterpret_cast zastosować w tym przypadku??
komentarz 20 grudnia 2015 przez draghan VIP (106,230 p.)

W taki sposób:

cout << * reinterpret_cast<int*>(wsk) << endl;

 

komentarz 21 grudnia 2015 przez niezalogowany
Dzięki wielkie za pomoc :) Masz zielonego ptaszka :)
komentarz 21 grudnia 2015 przez draghan VIP (106,230 p.)
Nie ja, tylko diablol, ale cieszę się, że pomogłem. :) Pozdrawiam. :)
komentarz 21 grudnia 2015 przez niezalogowany
Oboje mi pomogliście :)

Podobne pytania

0 głosów
2 odpowiedzi 235 wizyt
0 głosów
2 odpowiedzi 231 wizyt
0 głosów
1 odpowiedź 301 wizyt

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

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

...