Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Zeiger Feld Problem

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: