我知道在 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
,这表明它们不相等。但是有人可以向我解释为什么在比较字符数组时==
返回 a0
吗?
有人可以向我解释为什么第一个printf
返回 a 1
(即它们相等)并且字符数组返回 a0
吗?