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

dziwna linia kodu c++

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
399 wizyt
pytanie zadane 2 września 2015 w C i C++ przez timer_555 Początkujący (340 p.)
(void *)buffer,

jako parametr posyłany do funkcji typu bool

3 odpowiedzi

+2 głosów
odpowiedź 2 września 2015 przez Dorion300 Szeryf (90,250 p.)
Przekstałca wskażnik o dowolnym typie na typ wskażnika void.

Czasem jest on potrzebny w niektórych funkcjach.

gdyż czasem nie ma sensu przeładowanie funkcji jeśli ona jest duża.

 

Więc dajemy w sposób prosty.

np. parametr1 "trzymaj wskażnik", parametr2 "Którym jest typem char"

Gdyby nie ten sposób to trzeba zrobić drugą funkcję o podobnej wielkości tylko różniącą małymi szczegółami.
komentarz 2 września 2015 przez timer_555 Początkujący (340 p.)
Dzięki domyśliłeś się pewnie za co odpowiada ta klasa zachencam bardzo ciekawy temat.
+2 głosów
odpowiedź 2 września 2015 przez Sebastian Fojcik Nałogowiec (43,040 p.)

Wszystko już koledzy świetnie wytłumaczyli, a ja wtrącę małą dygresję.

Z tego samego powodu, przez który nie domyśliłeś się, że to zwykłe rzutowanie, ten sposób rzutowania jest odradzany. Rzutowanie to istotna operacja, a w ogóle się nie wyróżnia.

(void *)buffer; // Rzutowanie.
void (*buffer)(); // Wskaźnik na funkcję

Gdybyś chciał w kodzie wyszukać gdzie coś rzutowałeś, to Ctrl + F będzie bezużyteczny. Dlatego wymyślono operatory rzutowania, które widać z bardzo daleka i bardzo dobrze, bo jak wspomniałem: rzutowanie, to ważna operacja.

Obecnie należy korzystać z:
static_cast< >
reinterpret_cast< >
const_cast< > <--- używanie tego operatora, to grzech niewybaczalny XD
dynamic_cast< >

0 głosów
odpowiedź 2 września 2015 przez niezalogowany
Napisz ja cię proszę całą deklarację funkcji, czyli zwracanyTyp nazwaFunkcji(parametry); Na razie to mogę powiedzieć, że to zwykły wskaźnik wkazujący na void o nazwie buffer, chociaż nie wiem po co te nawiasy :)
komentarz 2 września 2015 przez Tomasz90 Nałogowiec (25,140 p.)
rzutuje na wskaźnik do voida
komentarz 2 września 2015 przez timer_555 Początkujący (340 p.)
bool Serial::WriteData(char *buffer, unsigned int nbChar)
{
    DWORD bytesSend;

    //Try to write the buffer on the Serial port
    if(!WriteFile(this->hSerial, (void *)buffer, nbChar, &bytesSend, 0))
    {
        //In case it don't work get comm error and return false
        ClearCommError(this->hSerial, &this->errors, &this->status);

        return false;
    }
    else
        return true;
}
komentarz 2 września 2015 przez niezalogowany
A ja myślałem, że ci chodzi o to, że (void *) buffer jest argumentem funkcji. Dorion, miałeś rację ;)

Podobne pytania

0 głosów
2 odpowiedzi 616 wizyt
pytanie zadane 23 sierpnia 2015 w C i C++ przez Slasheruus Nowicjusz (170 p.)
0 głosów
1 odpowiedź 9,684 wizyt
pytanie zadane 31 lipca 2016 w C i C++ przez Iamhexi Obywatel (1,330 p.)
0 głosów
0 odpowiedzi 190 wizyt
pytanie zadane 2 grudnia 2022 w Sieci komputerowe, internet przez Maks Dominiak Nowicjusz (120 p.)

93,439 zapytań

142,431 odpowiedzi

322,676 komentarzy

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

...