000
28.05.2004, 13:47 Uhr
Beginner
|
Hallo, habe ein Problem mit folgender Aufgabe. Es geht um einen Zeiger auf einem Feld. Die Informationen aus meinem C Buch reichen für die Aufgabe nicht aus.
Aufgabenstellung:
Geben Sie die Werte im Feld a und den Wert des Zeigers p am Ende der main Funktion an.
C++: |
void main() { int a[5]={2,4,6,8,10}; int *p=a+2;
*(p+1)=*(a+2); /*1*/ *p++=2; /*2*/ (*p)--; /*3*/ a[4]=a[1]+ *p--; /*4*/ *p=5; /*5*/
|
Der Zeiger wird auf das Feld a[2] gestellt. *(p+1) heißt jetzt dann also, daß der Zeiger um eins erhöht wird bzw. auf ein Element weiter nach rechts im Feld verschoben wird und diesem Element *(a+2) zugewiesen wird? also habe ich nach der ersten Zeile eigentlich das Feld {2,4,6,6,10}? Zeile 2: Der Zeiger zeigt aber immer noch auf (a+2).Erst jetzt wird er durch *p++ auf (a+3) erhöht und dem Wert 2 zugewiesen. Habe ich gedacht ist aber leider falsch. Wer kann mir mal die Zeile 2 und Zeile 3 erklären.
Hier die Lösungswerte aus der Übungsklausur: Das Feld nach Zeile 2 ist {2,4,2,6,10} p=a+2
das Feld nach Zeile 3 ist {2,4,2,5,10} p=a+3
Viele Grüße |