001
14.09.2004, 14:38 Uhr
Pablo
Supertux (Operator)
|
weil == mit char* keine Inhalte prüft, sondern die Adresse, auf die beiden Pointer zeigen.
C++: |
char x[10]; char y[10];
strcpy(x, "Hallo"); strcpy(y, "Hallo");
if (x==y) { printf("Gleich"); } else { printf("Ungleich"); }
|
wird immer Ungleich sagen. Der Grund ist, dass x==y vergelicht die Adressen, wo sich x[0] und y[0] befinden. Und die Adressen sind offensichtlich ungleich.
Eine Zeichenkette wie "Hallo" ist nicht anderes als ein char Array, das nach 'o' eine '\0' hat. Deshabl bringt == auch nichts, weil es wieder Adressen vergliechen werden.
strcpy vergleich Zeichenweise und gibt die Entfernung zurück, deshalb speichern 2 char* die gleiche Zeichenkette, wenn strcpy 0 zurückgibt. -- A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath, Gilthoniel, A! Elbereth! Dieser Post wurde am 14.09.2004 um 14:38 Uhr von Pablo editiert. |