【发布时间】:2015-06-17 06:56:27
【问题描述】:
我有点困惑。我有以下功能:
int comp(char s1[], char s2[]) {
return s1 == s2;
}
据我所知,这仅比较 char 数组 s1 和 char 数组 s2 中第一个元素的地址。
但奇怪的是,如果我比较(在 Visual Studio 中)两个相等的 char 数组,比如
comp("test","test");
我得到 1(真)而不是 0(假)。但是地址不应该不同,因此结果应该总是0吗?
【问题讨论】:
-
也许,编译器优化......使用
"test"的相同实例......虽然不确定 -
不要求两个相同的字符串字面量引用两个不同的字符串。
-
对不起,
malloc和其他东西。 -
@cybersoft 和这个问题有什么关系?
-
地址比较相等,因为string pooling。
标签: c arrays comparison