Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Frage [Pointer]

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 ]
000
14.06.2004, 21:06 Uhr
Tommi Bisic



Hallo!kann mir mal jemand bitte das erklären :

C++:
int *a,b[3]={6,7,8};
a=&b[1]
if (a[-1] == 6 &&  a[1] == 8)
cout<<"Dieser Text muss erscheinen"<<endl;
else
cout<<"Das darf nicht erscheinen"<<endl;



Wieso ist [-1] =6 es müsste doch 0 =[6] sein
Da der Array 3 lang ist müsste es doch nur 0,1,2 geben
Oder liege ich da falsch

Dieser Post wurde am 14.06.2004 um 22:44 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
14.06.2004, 21:15 Uhr
~Michael
Gast


Naja wenn du b alleine siehst ja.
1) *b == b[0]
2) a = &b[1] hier sagt er stelle den Zeiger auf das Element mit dem Index 1
3) jetzt wäre a[0] == *a == b[1] == 7
Wenn du jetzt a[-1] == *(a--) == b[0] == 6

ich hoffe das hilft. So wie es da steht kann man sich Felder erzeugen die einen beliebigen Wertebereich als Index haben
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
14.06.2004, 21:25 Uhr
Tommi Bisic



Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
14.06.2004, 22:06 Uhr
ao

(Operator)



Zitat:
Tommi Bisic postete

C++:
if (a[-1] == 6 ...




Was für ein perverser Schweinkram! Völlig unnützes Verwirrspiel! Kein zurechnungsfähiger C-Programmierer würde sowas in einem echten Programm schreiben. Das kann nur ein sogenanntes "Lehrbeispiel" sein.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
14.06.2004, 22:08 Uhr
Pablo
Supertux
(Operator)


Das ist in der Tat sehr komisch, mich würde wundern, wenn der Compiler da keine Warnung liefert oder so. Aber sowas hatte ich noch nie gesehen, obwohl ich mich nur mit C beschäftige.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
14.06.2004, 22:29 Uhr
Tommi Bisic



Also, irgendwie verstehe ich das nicht
a=&b[1];
also müsste doch
a=7
und
*a=6 sein?
a[0] ist dann 6 oder?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
14.06.2004, 22:38 Uhr
Pablo
Supertux
(Operator)


Nein.

a ist ein Pointer, also a speichert eine Adresse.

Sagen wir mal, dass b[0] in der Adresse 0xdeadbeee liegen würden.
Dann heißt

a=&b[1];

"speichere in a die Adresse von b[1], nämlich 0xdeadbeef".
das heißt, a==0xdeadbeef

*a äquivalent zu a[0] ist der Wert, der unter 0xdeadbeef gespeichert ist, nämlich b[1], also 7.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
14.06.2004, 22:49 Uhr
Tommi Bisic



Ach so!
Dieser Post wurde am 14.06.2004 um 22:57 Uhr von Tommi Bisic editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
14.06.2004, 22:57 Uhr
Tommi Bisic



Also ist a[0] äquivalent zu *a
und
a=&b[0] ist äquivalent zu a=b

Dieser Post wurde am 14.06.2004 um 22:59 Uhr von Tommi Bisic editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
14.06.2004, 23:09 Uhr
Pablo
Supertux
(Operator)


ja, so könnte man das sehen
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
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: