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 Vorausint 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[2i];
(pt + i)->n = a[2i + 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