010
31.05.2004, 15:05 Uhr
kronos
Quotenfisch (Operator)
|
ich versuch's mal zu erklären...
als erstes muss dir klar sein, a ist im prinzip auch ein (int*) so wie p. er zeigt auf a[0], also auf 2. direkt dahinter im speicher liegen vier weitere int, mit a+x erhälst du also einen zeiger auf a[x].
C++: |
void main() { int a[5]={2,4,6,8,10}; int *p=a+2; // p zeigt nun auf a[2] == 6
*(p+1)=*(a+2); // (p+1) zeigt auf a[3], a+2 zeigt auf a[2] // die feldbelegung ist nun 2.4.6.6.10 *p++=2; // ++ ist postfix, d.h. es wird erst 2 an den ort geschrieben, //auf den p zeigt (a[2]), dann p um eins erhöht. // belegung: 2,4,2,6,10 - p zeigt auf a[3] (*p)--; // inhalt von p wird dekrementiert --> 2,4,2,5,10 a[4]=a[1]+ *p--; // a[4] wird auf 4+5 gesetzt, dann wird p selbst dekrementiert // --> 2,4,2,5,9 *p=5; // --> 2,4,5,5,9
|
hoffe mal ich hab' keinen fehler gemacht. ich finde solche aufgaben übrigens ganz witzig aber äußerst sinnlos... -- main($)??<-$<='?'>>2?main($-!!putchar( (("$;99M?GD??(??/x0d??/a:???;a"+'?'/4) ??($??)+'?'/3-2-1+$%2)??''?')):'?';??> Dieser Post wurde am 31.05.2004 um 15:07 Uhr von kronos editiert. |