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

  • modder
    aktív tag

    C - Mi történik ha egy tömbre mutató pointner értékét eggyel növelem, majd kiíratom?
    Mi történik ha egy tömbre mutató pointner értékét eggyel növelem,majd kiíratom .Ezután egy új értéket adok a tömbnek.

    Szerintem:
    Ha eggyel növelem a mutatót eggyel tovább ugrik a memóriában ahol el van mentve a pointner.

    Ha új értéket adok utána - nos nem tudom ,uj értéket adtam a pointernek,de nem változott meg az értéke teljesen - maradt a régi értékéből és az újból is ? de viszont a memoria cime nem változott a pointernak

    #include <stdio.h>
    #include <conio.h>

    int main()

    {

    char str1[ ] = "abc";
    char *p;
    p = str1;
    printf("1. ertek{pointnera}: %p\n",p);
    printf("1. ertek{pointnera}: %s\n\n",p);
    p++;
    printf("2. ertek{pointnera}: %p\n\n",p);

    *p='df';
    printf("uj erteke : %s\n",p);
    printf("uj erteke: %p\n\n",p);

    return 0;
    }

    Szerintem:
    Ha eggyel növelem a mutatót eggyel tovább ugrik a memóriában ahol el van mentve a pointner.

    Nem egyel tovább ugrik a memóriában, ahol el van mentve a pointer, hanem:
    A pointer értéke (egy memória cím, egy szám) nő annyival, ahány byte-os az adatstruktúra, amire a pointert deklaráltad.

    Ha új értéket adok utána - nos nem tudom ,uj értéket adtam a pointernek,de nem változott meg az értéke teljesen - maradt a régi értékéből és az újból is ? de viszont a memoria cime nem változott a pointernak

    Nem a pointernek adtál új értéket, hanem annak a memóriának, amire mutat a pointered.

    A programod elvileg azt csinlája, hogy 'b'-t kicseréli 'd'-re (gondolom az f az csak elírás, mert aposztrófok közé csak karaktert lehet írni)

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