C言語の文字列を反転する以下のコードでは、res [i] = * p--を使用して文字列にアクセスすると動作します。C:文字列の逆:res [i] = * p--;しかし、* res ++ = * p--; does not
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;}
しかし、私が代わりに次を使用する場合 -
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;}
を私は戻り値として空の文字列を取得します。
そしてres ++ = * p--;内部エラーで()ループの結果を得るために:
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--;
^
、私はそれは非常に基本的な質問ですけど、誰かが私はこれを理解する助けてくださいすることができますか? ありがとうございます。
関数の最後に 'res'は文字列の先頭を指しません。 – BLUEPIXY
resはポインタ、* resまたはres [i]は値です。 – cpatricio
"私は以下の代わりに - * res ++ = * p--を使用していると言っています;戻り文字列として空の文字列を取得します。関数全体を表示する必要があります。 – Stuart