Avatar
Andrej
Člen
Avatar
Andrej :

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. listopadu 15:20
Avatar
petr.dar
Člen
Avatar
 
Nahoru Odpovědět 18. listopadu 15:42
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Andrej
DarkCoder:

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. listopadu 15:48
Avatar
Andrej
Člen
Avatar
Andrej :

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. listopadu 16:40
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na Andrej
Martin Dráb:
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. listopadu 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.