Hilfe mit char* - Zeigern
-
Also ich hab folgendes Problem:
Ich beschäftige mich gerade mit Zeigern und eigentlich ist bislang alles klar. Allerdings hab ich eine Frage zu char* - Zeigern.
int Var = 10; int *pVar; pVar = &Var; // *pVar --> 10 --> Wert den die Adresse von Var speichert // pVar --> Adresse von VarSoweit okay.
char *pDavis; pDavis = "Davis"; cout << *pDavis; //pDavis --> Davis (Das erhalte ich per cout) //*pDavis --> DWenn ich aber *pDavis inkrementiere erhalte ich
*pDavis --> DaWiederhole ich das Ganze kommt
*pDavis --> DavAllerdings ist es vollkommen egal ob ich pDavis oder *pDavis inkremetiere, immer das Gleiche! Jetzt kann ich mir darauf keinen Reim machen. Wie soll ich mir das Ganze im Speicher vostellen, wird jeder Buchstabe einzeln unter seiner eigenen Adresse gespeichert und worauf zeigen *pDavis und pDavis?
danke
-
Ein char-Zeiger zeigt auf ein Array aus chars, was mit \0 terminiert wird.
pDavis zeigt auf das erste Element des Arrays und *pDavis gibt dir das erste Element des Arrays.
-
mulo schrieb:
Wenn ich aber *pDavis inkrementiere erhalte ich
*pDavis --> DaWiederhole ich das Ganze kommt
*pDavis --> DavWenn dir dein Compiler obiges bei cout << *pDavis;
anzeigt, dann ist er kaputt. Normalerweise sollte jeweils nur ein Zeichen ausgegeben werden.#include <iostream> using namespace std; int main() { char* pstr = "Braunhirsch"; // pstr ist ein Zeiger auf eine konstante Zeichenkette (read only) // und zeigt auf das erste Byte dieser Zeichenkette. cout << *pstr << endl; // Der Stern, dereferenziert das, worauf der Zeiger pstr zeigt, // das ist ein char, also ist die Ausgabe B pstr++; // Zeiger, inkrementieren, Zeiger zeigt auf das nächste Byte, nämlich auf 'r' cout << *pstr << endl; // Dereferenzieren, Ausgabe 'r' // ... usw ... pstr--; // Zeiger zeigt wieder auf den Anfang der Zeichenkette cout << pstr << endl; // Implizite Dereferenzierung und Umwandlung in einen std string. // Ausgabe 'Braunhirsch' return 0; } MfG D.C
-
naja .. hab den BCB5 ^^
-
Hallo
Auch der BCB5 wendet die Zeigerarithmetik korrekt an.
bis bald
akari
-
akari schrieb:
Hallo
Auch der BCB5 wendet die Zeigerarithmetik korrekt an.
bis bald
akariund das heißt konkret? Ist jetzt alles richtig oder nicht?
-
mulo schrieb:
und das heißt konkret? Ist jetzt alles richtig oder nicht?
Nein. Das, was Du geschrieben hast, kann nicht sein.