0

文字列内の文字へのメモリ参照を渡し、Cを使用して関数で編集しようとしています。コードは次のとおりです。

void EditChar(char *input) {
printf("# %s #",*input);
*input = *input << 1
    }

int main() {
char *string ="aaaa";
EditChar(&string[2]);
printf("%s",string);
}

関数内の文字をうまく印刷できますが、これはポインタをたどっていることを意味していると思いますが、なぜその文字のポインタの位置を編集できないのですか?

4

1 に答える 1

0

の欠如; 3行目では、最初に問題が発生します。

2行目に文字ポインタの代わりに文字を渡しています。

そして私のMacでは、これらの問題を修正すると、読み取り専用メモリを変更しようとしているため、3行目でバスエラーが発生します。

char * string = strdup( "aaaa");

そして今それは動作します。

また、質問のコメントで述べられているように、strdupの代わりに、

char string [] = "aaaa";

于 2012-12-09T03:41:02.997 に答える