C で「文字列」を比較する正しい方法は を使用することstrcmp
ですが、いくつかの文字配列を==
演算子と比較してみましたが、奇妙な結果が得られました。
次のコードを見てください。
int main()
{
char *s1 = "Andreas";
char *s2 = "Andreas";
char s3[] = "Andreas";
char s4[] = "Andreas";
char *s5 = "Hello";
printf("%d\n", s1 == s2); //1
printf("%d\n", s3 == s4); //0
printf("%d\n", s1 == s5); //0
}
最初のものは、それらが等しくないことを示すprintf
a を正しく出力します。しかし、文字配列を比較するときにが返される1
理由を誰かが説明できますか?==
0
printf
最初の配列が aを返している1
(つまり、等しい) のに、文字配列が a を返している理由を誰かが説明してくれませんか0
?