Problem mit Zeiger



  • Hallo, zusammen
    Der Code soll von 1 bis 10 zweimal ausgeben.
    Aber die Ausgabe nach der Zuweisung(pt1->m = (pt + 3)->m;)
    ist "7 2 3 4 5 6 7 8 9 10", das heisst, pt->m hat sich verändert. Warum?
    Danke im Voraus

    int main()
    {
    struct Fourbits
    {
    unsigned char m: 4;
    unsigned char n: 4;
    } pt = NULL;
    char a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    struct Fourbits pt1 = NULL;
    int i = 0, j;
    for (i = 0; i < 5; i++)
    {
    (pt + i)->m = a[2
    i];
    (pt + i)->n = a[2
    i + 1];
    }
    for (i = 0; i < 5; i++)
    {
    printf("%d\t", (pt + i)->m);
    printf("%d\t", (pt + i)->n);
    }
    pt1->m = (pt + 3)->m; //"pt1->m" soll 7 sein,
    for (i = 0; i < 5; i++)
    {
    printf("%d\t", (pt + i)->m);
    printf("%d\t", (pt + i)->n);
    }

    }



  • weder pt noch pt1 haben speicher wo du etwas hineinschreiben könntest - arrays sind sie sowieso nicht...

    das programm produziert undefiniertes verhalten


Anmelden zum Antworten