Hirdetés

Keresés

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

  • jattila48

    aktív tag

    válasz mgoogyi #4140 üzenetére

    Attól tartok, teljesen félreérted.
    "...én a t-re gondolok, mint változóra"
    Ahogy írtam, a t NEM változó, hanem konstans és ez a lényeg. Ha azt írod, hogy
    int i=j+3;
    akkor az i és j változók, amik a memóriában futás időben keletkeznek, a 3 viszont konstans, ami sehol nem tárolódik el e memóriában, hanem a generált kódban jelenik meg mint konstans adat. Hasonlóan a tömb esetén is, sehol nem tárolódik a tömb (mint cím) értéke, hiszen csak egy konstans.
    "Az a konstans cím, amiről beszélsz, az maga a t változó tartalma"
    Nincs semmiféle t változó.
    "Annyit tud egy pointerhez képest, hogy a típusából kifolyólag tud arról, hogy hány elemű"
    Nem, nem tud róla hogy hány elemű, hiszen a konstansban ez nincs kódolva. C-ben egyébként sincs tömb index ellenőrzés (futás közben), és a fordító sem különböztet meg ez alapján típusokat (template-tel megoldható, ha a tömb méret template argumentum).
    "nem pointer, de mégis pontosan ugyanúgy viselkedik"
    Nem pontosan úgy viselkedik, ahogy előző hozzászólásomban írtam, nem adható neki érték, és nem képezhető a címe (szemben a pointerrel).
    "Másrészt nem csak a stacken lehet a tömbünk, hanem a heapen is"
    Nem, nem lehet a heapen tömb. Az nem tömb lesz, hanem dinamikusan foglalt memória, aminek a címe bekerül egy változóba (vagyis pointer), bár valóban kezelheted tömb szintaxissal, ha az elemeit akarod elérni. Tömböt deklarálni a stack-en lehet, vagy a globális adatterületen (amit a betöltő foglal le a memóriában).
    "Egyébként aki most ismerkedik a C++-szal, annak lehet inkább riasztó, mint segítség."
    A C++ nem egy egyszerű nyelv, és szerintem jó az elején tisztázni bizonyos dolgokat (pl. ezt), hogy később ne rögzüljön hibásan, mint ahogy az esetedben is.

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