首页 > 解决方案 > 比较数组,为什么我的 != if 语句正在运行?

问题描述

我正在尝试比较两个相等的数组,使用 for 循环和 if 语句来查看值是否不相等。他们不应该是,但无论如何它都会在 if 之后运行我的代码。

#include <stdio.h>
bool arrayChecker(int a[10], int b[10]);
    int main ()
    {
        bool output;
        int a[10] = {1,2,3,4,5,6,7,8,9,10};
        int b[10] = {1,2,3,4,5,6,7,8,9,10};
        output = arrayChecker(&a[10], &b[10]);
        printf("%d", output);
        return 0;
    }
    bool arrayChecker(int a[10], int b[10]){
        bool result = true;
        for(int i = 0;i<10;i++){
            if(a[i] != b[i]){
                result = false; 
                printf("this is being printed and shouldn't be'\n");
            }
        }
        return result;
    }

标签: c

解决方案


您将错误的东西传递给 arrayChecker 函数。

你应该有:

output = arrayChecker(&a[0], &b[0]);

或者

output = arrayChecker(a, b);

您传递的是数组末尾之后的内存位置地址,并比较之后的 10 个整数,就您的程序而言,它们保存随机值。


推荐阅读