Aktív témák

  • lajafix

    addikt

    válasz sonar #132 üzenetére

    ''void ASCIIHEX (unsigned char * origin);''

    Ez egy mutatót vesz át (*), címmel kell meghívni(pl így: unsigned char a; ASCIIHEX(&a); ), és ez az értelme: mivel nem ad vissza semmilyen értéket(ezért void) hanem a hívásban megadott tárterületen dolgozik.(annak ugye nincs semmi értelme, hogy meghívsz valamit és nem ad vissza semmit, sehol.)


    ''Másik kérdésem, hogy ha több void om van (void az itt a szubrutin megfelelője,ha jól nézem?)
    és amit uttánna adok meg változókat azokat végig viszi az egész programban.
    Kicsit érthettőbben: van két voidom
    void egy ( int a);
    void ketto (int b);

    a void ketto ben ha az ''a'' val számolok akkor az a void egy ben lévő utoljára felvett értékkel
    lesz kiszámolva.
    ''

    a void egy() szubrutinod átveszi az a értékét, összevissza számolhatsz vele, de csak az értékkel: visszatérés után nem változik az ''a'' értéke. Ebből jön, hogy void ketto ugyanazt az értéket kapja mint void egy, mert értékeket adsz át, nem változókat(azaz azok címeit)

    Tehát:
    main()
    {int érték;
    érték:=2;
    egy(érték);
    kettő(érték);
    printf(''%d'', érték);
    }

    lefuttatása után 2 lesz kiírva érték tartalmaként, bármit csinál az így egy, kettő függvény(merthogy a C-ben minden függvény, ohne subrutin, mint pascal, basic) mert értékként kezeli az átvett változót.

    ''j= konvert(origin)<<4;''

    A következőt csinálja:
    1. origin értékét átadja a konvert függvénynek(ami gondolom nem void) ami visszad egy értéket
    2. ezt az értéket megszorozza 16-tal. :) Mert << azt jelenti, hogy léptessd ballra a mellette levő változó bináris értékét 4 bittel. azaz alulra bejön 4 darab 0 bit, ami 16 -tal való szorzásnak felel meg. Profiknak C-ben így kell 16tal szorozni...
    3. ez az érték lesz j értéke


    Na csá!


Aktív témák