wieso funktioniert das nicht ???
-
char *nam = "hallo";
char *name = new char[15];
name = "hallo";
if(nam == name)
{cout << "funzt";
}
wieso kann ich die beiden zeiger nicht miteinander vergleichen ???
danke euch
-
strcmp
oder
std::string::operator==
-
Original erstellt von <ehmandu>:
wieso kann ich die beiden zeiger nicht miteinander vergleichen ???Kannst du doch! -> Tutorial über Zeiger lesen...
Vergleich von Zeigern != Vergleich der Inhalte
-
finde kein Zeiger Tutorial.....
wie kann man jetzt Zeiger vergleichen ?????
ich benutze ja eigentlich nur ein Zeiger....
der zeiger char *nam = "hallo";
hat ja gar keine Adresse..... der zeig einfach nur auf "hallo".....
nur char *name = new char[10];
zeigt auf eine Adresse bzw... auf 10 adressen.......
komm einfach nicht weiter bitte helft mir
DANKE
-
-
Hi,
char *VarOne = "Hallo"; char *VarTwo = new char[15]; strcpy ( VarTwo, "Hallo" ); if ( VarOne == VarTwo ) //beeeep!!! Hier wird nur die Addresse von //VarOne und VarTwo verglichen _nicht_ der Inhalt
Soll heissen:
Vergleichst du einfach 'PointerVar' mit 'PointerVar', so werden die Addressen
dieser Zeiger verglichen. Saehe der o. Code so aus, wuerde die Bedingung 'true'
liefern:char *VarOne = "Hallo"; char *VarTwo = VarOne; if ( VarOne == VarTwo ) //true - da VarTwo auf selbige Addresse zeigt, wie //VarOne
Willst du aber den Inhalt vergleichen, musst du das anders machen. Zwei
Moeglichkeiten sind ja schon aufgezaehlt worden. Du koenntest es beispielsweise
so machen:char *VarOne = "Hallo"; char *VarTwo = new char[15]; strcpy ( VarTwo, "Hallo" ); if ( !strcmp ( VarOne, VarTwo ) ) //in unserem Beispiel == true, da //Inhalt gleich. Negation, da strcmp //0 im Falle von Gleichheit liefert
mfg
v R
-
Original erstellt von virtuell Realisticer:
Vergleichst du einfach 'PointerVar' mit 'PointerVar', so werden die Addressen
dieser Zeiger verglichen.kleine anmerkung:
nicht die addressen der zeiger selber, sondern die addressen auf die die zeiger zeigen, werden miteinander verglichen
-
ok danke ...
aber mir ist noch etwas unklar...
char *nam = "hallo";
hat doch gar keine adresse oder...... der zeiger zeigt einfach auf die zeigenfolge.......oder nicht ?????
-
Doch das ist es. Der Text wird an eine Addresse gelegt und der Zeiger zeigt auf
diese.mfg
v R
-
aha
ok danke euch
-
gibt es einen grund, warum du das mit char* machst? diese typischen fehler die du gemacht hast, waeren bei string alle korrekt:
#include<string> #include<iostream> using namespace std; int main(){ const string nam("hallo"); string name; name = "hallo"; //anything that might change name if(nam==name){ cout<<"works"<<endl; } return 0; }
-
achte drauf dass du nicht son schmarn machst:
char *name = new char[15]; name = "hallo"; //FALSCH!
Das geht so nicht! mache es wie virtuell Realisticer
strcpy ( name, "Hallo" );
du benutzt nähmlich einen pointer auf ein char array und keinen string wie er dir von string.h zur verfügung gestellt wird!
*dasnurmalbetonenwollte*[ Dieser Beitrag wurde am 15.06.2003 um 14:59 Uhr von THE_FreaK editiert. ]
-
von string.h = cstring wird dir kein string zur verfuegung gestellt, den gibts nur in string.