inhaltszeigeradresse vergleichen
-
Hallo Leute,
ich habe folgendes Problem:
ich möchte 2 zeiger vergleichen.
z.B.char inhalt[512]={"halloc-plusplusforum.de"} //zwei zeiger char *ptr1=inhalt[0]; char *ptr2=inhalt[10]; //ptr1 und ptr2 haben nun beide eine adresse // (die addresse von ptr2 ist mit sicherheit größer, da sie später instanziert wurde // ich möchte nun vergleichern welcher Zeiger sich weiter im "inhalt" befindet //per int x=ptr1>ptr2; // hier wird wohl immer die addresse der instanzen also der adressen der pointer und nicht der addressen der inhalte int x=*ptr1>*ptr2; // hier wird ja der inhalt also [0] und [10] verglichen //kann man irgendwie die position des inhalts vergleichen?
Danke schonmal
-
Was meinst Du mit "weiter im Inhalt"
-
char inhalt[512]="halloc-plusplusforum.de"; char *ptr1=&inhalt[0]; // das ist das 'h' char *ptr2=&inhalt[10]; // das ist das 's' int x=ptr1>ptr2; // --> x ist 0, weil die Adresse des 'h' kleiner ist als die des 's' int x=*ptr1>*ptr2; // --> x ist 0, weil 'h' kleiner ist als 's' int x=&ptr1>&ptr2; // --> x ist undefiniert
-
char inhalt[512]="halloc-plusplusforum.de"; char *ptr1=&inhalt[0]; // das ist das 'h' char *ptr2=&inhalt[10]; // das ist das 's' int x=ptr1>ptr2; // --> x ist 0, weil die Adresse des 'h' kleiner ist als die des 's' int x=*ptr1>*ptr2; // --> x ist 0, weil 'h' kleiner ist als 's' int x=&ptr1>&ptr2; // --> x ist undefiniert
wenn ich nun aber folgendes mache:
char *ptr1=&inhalt[5]; char *ptr2=&inhalt[2]; int x=ptr1>ptr2
bleibt ptr2 grösser als ptr2, ich vermute wird die Addresse von ptr1 und ptr2 verglichen und nicht die Addresse des Inhalts als die Adresse auf die ptr1 und ptr2 verweisen.
es müsste irgendwie so funktionieren.int x=&*ptr1>&*ptr2;
Ich habe irgendwo gelesen, dass chars anders gehandhabt werden. also habe ich versucht in void zu casten
int x=((void*)ptr1>(void*)ptr2);
-
Hab den Fehler gefunden, lag an einer schleife, nehme alles zurück, kann geclosed werden.
Danke für die responses!
-
halloforumsgast schrieb:
Hab den Fehler gefunden, lag an einer schleife, nehme alles zurück, kann geclosed werden.
Danke für die responses!Aber die Gelegenheit ist gerade gut, um zu sagen, dass
&*ptr1
in jedem Fall das gleiche ist wieptr1
.
-
@ungbd
warum ist
int x=&ptr1>&ptr2; // --> x ist undefiniert
eigentlich undefiniert?
ist &ptr1 nicht die addresse der variable?
-
halloforumsgast schrieb:
warum ist
int x=&ptr1>&ptr2; // --> x ist undefiniert
eigentlich undefiniert?
ist &ptr1 nicht die addresse der variable?Ja, das ist die Adresse. Aber der Standard schreibt dem Compiler nicht vor, in welcher Reihenfolge solche lokalen Variablen im Speicher sein sollen (warum sollte er auch?). Ich kann dich aber beruhigen: meine Compiler haben in einem simplen Testfall alle ptr2 nach ptr1 abgelegt, genau wie du vorausgesehen hast.
-
Ahhh ok , sorry hatte undefiniert falsch interpretiert.
du meinst mit undefiniert= was größer oder kleiner ist ist undef.
ich dachte du meinst damit, dass das ergebnis=NULL.
Danke!!