Im folgenden Code, um eine Zeichenfolge in C-Sprache umzukehren, funktioniert es, wenn ich auf die Zeichenfolge mit dem Index zugreifen, res [i] = * p--;C: Umkehrung einer Zeichenkette: res [i] = * p--; funktioniert, aber * res ++ = * p--; nicht
char *reverseString(char * s){
int l = strlen(s);
char *res = malloc(sizeof(s) + 1);
char *p = s + l - 1; // point to the last letter
int i = 0;
for(;i < l; i++)
res[i] = *p--;
return res;}
Aber wenn ich folgendes stattdessen -
char *reverseString(char * s){
int l = strlen(s);
char *res = malloc(sizeof(s) + 1);
char *p = s + l - 1; // point to the last letter
int i = 0;
for(;i < l; i++)
*res++ = *p--;
return res;}
ich einen leeren String als Rückgabewert.
Und res ++ = * p--; innerhalb des für() Schleife führt zu einem Fehler:
char *reverseString(char * s){
int l = strlen(s);
char *res = malloc(sizeof(s) + 1);
char *p = s + l - 1; // point to the last letter
int i = 0;
for(;i < l; i++)
res++ = *p--;
return res;}
error: lvalue required as left operand of assignment
res++ = *p--;
^
Ich weiß, es ist eine sehr grundlegende Frage, aber kann jemand bitte helfen Sie mir, dies zu verstehen? Danke.
am Ende der Funktion 'res' zeigt nicht auf den Anfang der Zeichenfolge. – BLUEPIXY
res ist der Zeiger, * res oder res [i] ist der Wert. – cpatricio
Sprich "wenn ich stattdessen folgendes benutze - * res ++ = * p--; bekomme ich einen leeren String als Rückgabewert" ist nicht gut genug. Sie müssen die gesamte Funktion anzeigen. – Stuart