【发布时间】:2012-10-03 16:51:54
【问题描述】:
有人可以向我解释一下为什么以下代码的输出显示数组不等于?
int main()
{
int iar1[] = {1,2,3,4,5};
int iar2[] = {1,2,3,4,5};
if (iar1 == iar2)
cout << "Arrays are equal.";
else
cout << "Arrays are not equal.";
return 0;
}
【问题讨论】:
-
使用
std::array或std::vector。 C 数组没有单一的优势,它们只会带来痛苦和悲伤。没有任何借口。 -
@daknøk 与 C 的互操作怎么样?
-
@weberc2
.data()。没有任何借口。 -
不,它没有,但它用于 C 互操作。不,将 C 数组转换为 std::arrays,只是为了检查是否相等,是完全不可接受的。它涉及复制。当
std::array_view成为标准时,我们将有一种明智的方式来比较由 C 互操作产生的原始数组。 -
您声明的变量是指向内存中两个不同位置的两个单独数组中的第一个 int 元素的指针。它们不相等(地址不同),因此条件测试评估为假。
标签: c++ arrays comparison equality