NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Smerníky

V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Imre
Člen
Avatar
Imre:18.11.2016 15:20

Dobrý deň,
našiel by sa tu niekto kto by mi nejako normálne vysvetlil smerníky? Študoval som teoriu o nich viem že * odkazuje na miesto kde je uložená premenná v pamäti a & je adresa pamäte, kde je uložená premenná, myslel som že som ich pochopil ale keď som si pozrel nejaké programy tak nemám vôbec potuchy, prečo tam tie smerníky sú. Keby sa to dalo nejako vysvetliť, že kde a kedy ich mám používať a prečo.
Ďakujem.

 
Odpovědět
18.11.2016 15:20
Avatar
petr.dar
Člen
Avatar
petr.dar:18.11.2016 15:42

Zde:

 
Nahoru Odpovědět
18.11.2016 15:42
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Imre
DarkCoder:18.11.2016 15:48

Ukazatele jsou dosti široký pojem, vlož sem kód programu a sděl nám, kde Ti co není jasné.

Nahoru Odpovědět
18.11.2016 15:48
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Imre
Člen
Avatar
Imre:18.11.2016 16:40

tak napríklad mám program, ktorý konvertuje binárne číslo do desiatkového a naopak tu je jedna metoda:

unsigned char * Koder::dekoduj(const unsigned char * heslo, const unsigned char * sifrovanytext)
{
        ZakodujASCII(heslo);
        DekodujASCII();

        int indexDesifrovanehoTextu = 0;

        int dlzkaSifrovanehoTextu = strlen((char *)sifrovanytext);
        unsigned char *desifrovanyText = new unsigned char[dlzkaSifrovanehoTextu / 3 + 1];
        for (int offsetTrojbajtia = 0; offsetTrojbajtia < dlzkaSifrovanehoTextu; offsetTrojbajtia += 3)
        {
                char pom[4];
                memmove(pom, &sifrovanytext[offsetTrojbajtia], 3);
                int sifrovaneCislo = atoi(pom);
                desifrovanyText[indexDesifrovanehoTextu] = ASCII[sifrovaneCislo];
                indexDesifrovanehoTextu++;
        }

        desifrovanyText[indexDesifrovanehoTextu] = '\n';
        return desifrovanyText;
}

alebo potom napríklad čo znamená a kedy použijem *& súčastne, ďakujem

IOOperation::IOResult IOOperation::read(unsigned char *&data)
 
Nahoru Odpovědět
18.11.2016 16:40
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na Imre
Martin Dráb:18.11.2016 17:59
IOOperation::IOResult IOOperation::read(unsigned char *&data)

Z tvého prvního příspěvku jsem nabyl dojmu, že jsi nějakým způsobem nastudoval ukazatele v C. Ale tento případ používá operátor & ve smyslu C++ (pro C je toto použití nevalidní). V tomto případě se jedná o definici parametru typu **reference na unsigned char* **. Reference je také ukazatel, jenom překladač velmi silně kontroluje, jak s nimi nakládáš a platí pro ně spousta omezení. Ale pokud místo **unsigned char * & ** použiješ **unsigned char * * **, dosáhneš stejného výsledku, ač syntaxe bude jiná.

Nahoru Odpovědět
18.11.2016 17:59
2 + 2 = 5 for extremely large values of 2
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.