Zuweisung Zeiger
-
Hallo!
Ich versuche gerade, folgende Zeilen zu verstehen:
char* p; p = strstr(Buffer, TestString); (...) p[0] = '_'; p = strstr(p, "=");
(Auszug aus einem mir vorgelegten Programm).
Jetzt meine Frage:
was hat p[0] für einen Sinn? p zeigt dann auf ein char-Objekt, das mit '' beginnt. Wenn jetzt aber bereits in der nächsten Zeile p eine neue Adresse strstr(p, "=") zugewiesen wird, dann war doch p[0] = '' umsonst, oder? Denn dann wird doch p[0] auch überschrieben??!Würd mich sehr über Tipps freuen!
Liebe Grüße,
Julia
-
Wenn jetzt aber bereits in der nächsten Zeile p eine neue Adresse strstr(p, "=") zugewiesen wird, dann war doch p[0] = '_' umsonst, oder? Denn dann wird doch p[0] auch überschrieben??!
strstr überschreibt nichts, sondern setzt, wie du schon gesagt hast, den Pointer p um.
Dein Programmausschnitt sieht so aus, als ob in einem längeren String bestimmte Zeichen durch andere ersetzt werden sollen, z.B.
char string[] = "Hallo+Welt+wie+gehts"; char *p = strstr(string, "+"); while(p != NULL) { p[0] = ' '; // oder anders *p = ' '; p = strstr(p, "+"); // naechstes Zeichen suchen }
-
julchen81 schrieb:
was hat p[0] für einen Sinn?
Wenn p ein Zeiger ist dann
p[0] ist equivalent zu *(p + 0)
p[1] ... *(p + 1)
...// der Zeiger pa zeigt auf die gleiche addresse wie p
int* pa = p;// der inhalt ( das 2 Zeichen ) des char objects auf den p zeigt, wird zu ff zugewiesen
int ff = *(p + 1);julchen81 schrieb:
p zeigt dann auf ein char-Objekt, das mit '_' beginnt.
p zeigt auf ein char object
p[0] = '';
// der neu inhalt des char objebts auf den p zeigt ist das zeichen ''julchen81 schrieb:
Wenn jetzt aber bereits in der nächsten Zeile p eine neue Adresse strstr(p, "=") zugewiesen wird, dann war doch p[0] = '_' umsonst, oder? Denn dann wird doch p[0] auch überschrieben??!
Nein, der p Zeiger zeigt nun auf eine neuen char object, mehr nicht.
-
Hallo!
Erstmal Danke für eure Hilfe!
Ihr konntet mir weiterhelfen, jedoch fehlt mir der letzte Groschen, der noch fallen soll.
Ihr beide habt mir geschrieben, dass der Zeiger auf ein anderes Objekt umgebogen wird. Was hat es dann für einen Sinn, vorp = strstr(p, "=");
noch
p[0] = '_';
zu setzen, wenn mit diesem Objekt ('_') doch nicht gearbeitet wird? Dann geht doch das komplett unter?!
Schönen Tag noch!
Julia
-
das ist ein Zeichen ( Literal ) '_' kein Objekt
// definire einen pointer
char* p;// p zeigt auf einen möglichen objekt
p = strstr(Buffer, TestString);
(...)// das 1 Objekt auf den der Zeiger p Zeigt bekommt den Inhat '' (Zeichen)
p[0] = '';// der Zeiger p wird umgebogen und zeigt auf ein anderes Objekt
p = strstr(p, "=");
-
aaahhhh.... natürlich... das Objekt wird geändert, dann der Zeiger umgebogen.
Da war er, der Groschen
Dickes Dankeschön!!
Julia