Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)
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
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
Redaktor
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.