我试图比较两个int数组,逐个元素,以检查是否相等。我似乎无法使它正常工作。基本指针资源也欢迎。谢谢!

int *ints;
ints = new int[10];

bool arrayEqual(const Object& obj)
{
    bool eql = true;

    for(int i=0; i<10; ++i)
    {
        if(*ints[i] != obj.ints[i])
            eql = false;
    }

    return eql;
}

最佳答案

当您执行if(*ints[i] != obj.ints[i])时,要比较的是ints[i]指向的地址与obj.ints[i]的内容,而不是ints[i]本身的内容。这是因为数组的名称已经是指向数组第一个元素的指针,并且在添加下标时,将在该数组中第一个元素之后寻找第i个位置。这就是为什么您不需要*的原因。

正确的是:

int *ints;
ints = new int[10];

bool arrayEqual(const Object& obj)
{
    bool eql = true;

    for(int i=0; i<10; ++i)
    {
        if(ints[i] != obj.ints[i])
                eql = false;
    }

    return eql;
}


希望我能帮上忙!

关于c++ - 垒球C++问题:如何比较两个数组是否相等?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1516574/

10-11 18:08