Új hozzászólás Aktív témák

  • emvy

    nagyúr

    válasz Pttypang #5105 üzenetére

    Van a neten csomofele leiras, erdemes rakeresni, de probaljuk meg itt is.

    Ugyebar C-ben (es mas imperativ prog. nyelvekben is) vannak valtozoink, vagy nevezzuk oket inkabb ertekeknek, mert az tokmindegy, hogy valtoznak-e vagy sem. A forditonak megprobaljuk megmondani, hogy milyen tipusu az az ertek, amit letrehozunk. (A tovabbiakban tegyuk fel, hogy sima 32 bites arhichitekturan vagyunk). Pl.:

    double a = 1;

    Egy valtozorol mindig ket dolgot tudunk: mekkora helyen fer el (hany bitnyi hosszu), es hogyan ertelmezzuk. Azt, hogy hogyan/minek ertelmezzuk, szoktak tipusnak is nevezni.
    Most 'a'-rol a kovetkezoket tudjuk:
    - 64 bitnyi informacionk van
    - ezt egy elojellel rendelkezo lebegopontos szamkent ertelmezzuk

    Ha van egy ilyenunk:

    double * a;

    .. akkor errol az tudjuk, hogy
    - 32 bitnyi informacionk van
    - ez egy egesz szam, es ugy ertelmezzuk, mint egy memoriacimet. A memoriacimen pedig egy 64 bit hosszu lebegopontos szamot talalunk.

    Tehat a pointer egy jellemzoen 32 vagy 64 bitnyi informaciot tartalmazo szam. A memoria szepen be van szamozva 0-tol 2^32 vagy 2^64-ig. Ha ahhoz a memoriarekeszhez mesz, aminek a szama megegyezik a pointer ertekevel, akkor ott egy olyan erteket talalsz, aminek a tipusa a pointer tipusaban jelezve is van.

    A pointert a * jelzi altalaban. Ha van pl. egy
    double ** a;

    akkor az a kovetkezo jelenti, analog modon:
    - van egy 32 bites ertekunk
    - ez egy egesz szam, es ugy ertelmezzuk, mint egy memoriacimet. A memoriacimen pedig egy 32 bit hosszu egesz szamot talalunk, amit ugy ertelmezunk, mint egy 32 bites erteket, amit ugy ertelmezzunk, mint egy memoriacimet. A memoriacimen pedig egy 64 bit hosszu lebegopontos szamot talalunk.

    Ez idaig vilagos?

    (Tobbieknek: szandekosan vagyok pontatlan az int, double, etc. meretevel kapcsolatban.)

    while (!sleep) sheep++;

Új hozzászólás Aktív témák