Bitte um QuellcodeErklärung
-
Hallo zusammen,
meine Freundin hat in der Uni C und ich würde Ihr gerne behilflich sein. Bloß ist mein Fachwissen was C/C++ sehr stark eingerostet da ich es ewig nicht gebraucht hab.
Könnt ihr mir bitte eine Musteraufgabe einer Klausur Zeile für Zeile erklären?
Ich wäre euch mit großem Dank verbunden
int i, n=10; /*Das ist klar, i ist integer und n ist gleich 10 int *p /* Zeiger ist p? p=malloc(n * sizeof(int)); /* ?? for(i=0; i<10; i++) /* typische for schleife { *(p+i) = 2*i; /* ?? } printf("%d", *(p+i-*(p+2))); /* ??und wieso kommt als Ergebnis 12 raus?
-
Der C-Kommentar /* braucht auch ein Abschluss mit */
wegen malloc: http://www.cplusplus.com/reference/cstdlib/malloc/In Array-Schreibweise sieht das Programm so aus:
... for(i=0; i<10; i++) { p[i] = 2*i; } printf("%d", p[i - p[2] ]);Du bekommst einen Speicherbereich für 10 int geliefert.
Dort schreibst du die Werte 0,2,4,6,8,10,12,14,16,18 rein
Am Ende der Schleife (also beim printf) hat i den Wert 10.
In p[2] steht der Wert 4.
Du greifst also auf das Element 6 zu (10-4 ist 6). Und darin steht der Wert 12
-
Aber das Element 6 ist doch 10 und nicht die 12.
Oder zählt man die 0 nicht mit? und wenn nicht, warum?Danke für die Antwort

-
Der Index beim Array fängt immer bei 0 an. (Aber bedenke, dass wir über C reden)
p[0] = 0; /* 1. Element /
p[1] = 2;
p[2] = 4;
p[3] = 6;
p[4] = 8;
p[5] = 10;
p[6] = 12;
p[7] = 14;
p[8] = 16;
p[9] = 18; / 10. Element */Du musst zwischen dem Element 6 und dem 6. Element unterscheiden.