理解 C 语言中的数组相等比较
使用 == 运算符比较数组时,程序员经常会遇到意想不到的结果。为了深入研究这个问题,我们来分析下面的代码片段:
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."; }
尽管包含相同的元素,但代码输出“数组不相等”。要理解这种行为,我们必须检查 C 如何处理数组比较。
使用 == 比较数组时,表达式简化为比较指向每个数组第一个元素的指针。然而,在这种情况下,iar1 和 iar2 代表存储在不同内存地址的两个不同的数组。因此,它们评估为不相等的指针,从而导致“不相等”的输出。
要执行逐元素比较,可以采用替代方法。一种方法涉及使用循环来单独比较每个元素。或者,对于 C 11 及更高版本,std::array 提供了一种更加结构化的数组处理方法。在下面修改后的代码中,使用 std::array 来表示数组,并使用 == 运算符进行逐元素比较,产生预期结果:
std::array<int, 5> iar1 {1, 2, 3, 4, 5}; std::array<int, 5> iar2 {1, 2, 3, 4, 5}; if( iar1 == iar2 ) { // arrays contents are the same } else { // not the same }
以上是为什么使用 == 运算符比较 C 数组时不相等?的详细内容。更多信息请关注PHP中文网其他相关文章!