0

重複の可能性:
char a[] = “string”; の違いは何ですか? および char *p = 「文字列」;

int main() {
 char *p="ayqm";
 char c;
 c=++*p;
 printf("%c",c);
 return 0;
}

その出力はa. http://codepad.org/cbNOPuWtを参照してbくださいc = ++*p。出力の理由を説明できる人はいますか?

4

1 に答える 1

6

確かに、それは未定義の動作です。何でも起れる。

文字列リテラルを変更しようとしていますが、これは違法です。

たとえば、

char c = *p;
++c;

正しい出力が表示されます。

の実際の型は であるp必要がありconst char*ます。この場合、コンパイラ エラーが発生します。

于 2012-11-20T04:41:04.987 に答える