*dringend* Pointer-Frage
-
Habe morgen Klausur und nun habe ich hier eine Aufgabe, an der ich mir gerade die Zähne ausbeiße... dabei ist das bestimmt ganz einfach
Vervollständigen Sie die folgende Funktion, die eine Zeichenkette übergeben bekommt und eine Zeichenkette bereitstellt, in der jedes ´E´ und ´e´ durch einen Stern (*) ersetzt wird. Verwenden Sie dazu ausschließlich den Zeiger pt (keine anderen Variablen)!
Anmerkung: Es ist nur eine Anweisung notwendig!function (char *txt) { char *pt; for (pt = txt; *pt ; pt++) { .... ?? }
Kann mir jemand aufhelfen? Heute noch *büdde*
-
vs (gbhccre(*cg) == 'R') *cg = '*';
Für die Klausur wird's dir aber vermutlich nicht viel helfen.
-
??
was ist vs? und cg? Ich versteh die Zeile nicht ganz...
Ich hatte sowas im Sinn: *ptr = '*'; aber da krieg ich eine Access Violation
Doch, das wird was nützen, denn diese Frage kommt dran, das weiß ich
-
Bini schrieb:
was ist vs? und cg? Ich versteh die Zeile nicht ganz...
Mein Beitrag zur Eigeninitiative: rot13.
Ich hatte sowas im Sinn: *ptr = '*'; aber da krieg ich eine Access Violation
Nee, ist schon richtig. Lass mich raten, Du testest deine Funktion etwa so:
char *test = "abcde...ABCDEF..."; f(test);
?
-
Ja.
Und was ist rot13?
-
http://de.wikipedia.org/wiki/ROT13
eine verschlüsselungviel glück bei der klausur
-
Bini schrieb:
Ja.
Dieser String ist nicht modifizierbar, der String wird in einem evtl. nicht beschreibbaren Bereich abgelegt, man darf darauf nicht schreibend zugreifen. Probier mal 'char text[] = "...";' (beachte die []), dann klappt's auch mit dem Test.
-
elise schrieb:
http://de.wikipedia.org/wiki/ROT13
eine verschlüsselung
viel glück bei der klausurzum entschlüsseln: http://retards.org/projects/rot13/
-
elise schrieb:
viel glück bei der klausur
Hallo Elise
Wie lief es mit Mathe bei Dir??
-
Daniel E schrieb:
Dieser String ist nicht modifizierbar...Probier mal 'char text[] = "...";'
Schön, das geht
Aber warum ist das eine modifizierbar und das andere nicht? Dachte immer, ein char-Array ist letztlich auch nicht anders als ein char-Pointer. Hm, war wohl zu kurz gedacht...
-
Bini schrieb:
Aber warum ist das eine modifizierbar und das andere nicht? Dachte immer, ein char-Array ist letztlich auch nicht anders als ein char-Pointer. Hm, war wohl zu kurz gedacht...
char *p = "hallo"; // p ist ein pointer char a[] = "hallo"; // a ist der name eines arrays p = "lala"; // das geht a = "blabla"; // das geht nicht
-
net schrieb:
p = "lala"; // das geht
a = "blabla"; // das geht nichtHm? Ich denke, genau andersrum?! Wie nun??
-
Stichwort: String-Literal
-
Bini schrieb:
net schrieb:
p = "lala"; // das geht
a = "blabla"; // das geht nichtHm? Ich denke, genau andersrum?! Wie nun??
Ein Zeiger kann woanders hin zeige.
Beiweis:
int* p;
++p;Ein Array kann nicht woanders hin zeigen (es ist ja ein array und kein zeiger und zeigt somit sowieso nie irgendwo hin)
Beweis:
int a[10];
++a;Ein Array kann in einem Zeiger Kontext aber dennoch oft zu einem Zeiger auf das erste Element werden.
Beweis:
int* p;
int a[10];
p=a;Gründe warum
a[1]=7;
geht aber
p[1]=7;
nicht gehtBei a haben wir ein Array, bei p einen Zeiger. "hallo" ist ein Stringliteral.
Und genau da liegt das Problem. "hallo" ist konstant, es steht so fest in der binary drinnen. Es zu ändern geht nicht.
anders bei einem array. denn ein array besitzt den speicher selbst und man kann daher den speicher auch ändern (während ein zeiger auf fremden speicher zeigt (dass dieser auch mal änderbar sein kann ist etwas anderes)).
-
Shade Of Mine schrieb:
Bei a haben wir ein Array, bei p einen Zeiger. "hallo" ist ein Stringliteral.
Und genau da liegt das Problem. "hallo" ist konstant, es steht so fest in der binary drinnen. Es zu ändern geht nicht.
anders bei einem array. denn ein array besitzt den speicher selbst und man kann daher den speicher auch ändern (während ein zeiger auf fremden speicher zeigt (dass dieser auch mal änderbar sein kann ist etwas anderes)).Danke für Deine Antwort
Der Professor konnte mir das übrigens nicht erklären
Ach ja: die Klausur lief super