そこで、次のテストを行いました。
char* a = "test";
char* b = "test";
char* c = "test\0";
そして今、質問:
1) それは保証されていa==b
ますか? 私はアドレスを比較していることを知っています。これは文字列を比較することを意図したものではなく、同一の文字列リテラルが単一のメモリ位置に格納されているかどうかを示しています
2)なぜそうしないa==c
のですか?コンパイラは、それらが同じ文字列を参照していることを確認できるはずではありませんか?
3)すでに含まれている場合でも\0
、末尾に余分なものが追加されていますか?c
3 つの異なる質問はしたくありませんでした。これらは何らかの関連があるように思われるからです。申し訳ありません。
注: タグは正しいです。私は C++ に興味があります。(ただし、C で動作が異なる場合は指定してください)