7

これがどのように機能するかわかりません。

// This doesn't work (obviously)
char a;
a = "aaa";

// This works
char* a;
a = "aaa";

なぜこれが機能するのですか?

chartype には 1 文字または 1 バイトの数値しか格納されないため、ポインターを介してアクセスするときに、どのようにしてより多くの文字を格納できますか?

4

2 に答える 2

10

に文字を入れていませんchar*。コンパイラによって決定されたメモリの一部に文字の配列を作成し、char*その配列の最初の文字を指しています。

配列は実際には const であるため、非 const ポインターに割り当てることはできません。しかし、歴史的な理由により、多くの C++ 実装ではまだ可能です。ただし、C++11 では正式に違法になりました。

于 2013-11-13T02:41:23.900 に答える
2

2 つ目は、単一の文字ではなく、文字列へのポインタです。チュートリアル。

于 2013-11-13T02:41:54.223 に答える