gpt4 book ai didi

c++ - 使用指针比较数组中的元素 (C++)

转载 作者:行者123 更新时间:2023-11-30 03:18:15 24 4
gpt4 key购买 nike

我正在创建函数 compare_arrays 来检查预定义数组中的元素是否相似。我想使用指针并通过引用将数组传递给函数。这是我到目前为止编写的函数,但是 pylint 在我的第二个 if 循环中给出了一个错误,指出 *arry1 和 *arry2 未定义。有人可以帮助我更好地理解这个错误。

另外,如何调用函数并传入arr_one、arr_two等......

#include <iostream>

using namespace std;

int size1 = 3, size2 = 3;
int arr_one[] = {1, 2, 3};
int arr_two[] = {1, 2, 3};



int main(){

bool compare_arrays( int *arry1, int size1, int *arry2, int size2);{
if (size1 != size2){
return false;
}
for(int i=0; i < size1; i++);{
if (*arry1 != *arry2);{
return false;
}
}
*arry1++;
*arry2++;
return true;
}
}

最佳答案

代码中最大和主要的问题是在 compare_arrays 末尾包含 ;。您实际上在做的是声明一个函数 compare_arrays,然后创建一个单独的作用域,这就是未定义 arry1 的原因。如果删除此分号,您的错误将开始变得更有意义:

bool compare_arrays( int *arry1, int size1, int *arry2, int size2) {

现在编译器会告诉你不能在函数内定义函数,这很容易解决。将 compare_arrays 移到 main 之外:

bool compare_arrays( int *arry1, int size1, int *arry2, int size2){
if (size1 != size2){
return false;
}
for(int i=0; i < size1; i++);{
if (*arry1 != *arry2);{
return false;
}
}
*arry1++;
*arry2++;
return true;
}

int main() {
}

现在可以编译,但可能不会按预期运行,因为在第二个 if 语句末尾有一个额外的错误分号。这意味着分号被视为来自 if 的表达式,那么您将始终 return false;。通过删除分号来解决此问题:

for (int i = 0; i < size1; i++) {

现在您可以像这样简单地在 main 中调用您的代码:

int main() {
if (compare_arrays(arr_one, size1, arr_two, size2)) {
std::cout << "arrays are equal\n";
}
}

但是,您可以使用 std::vector 简化整个事情:

#include <vector>
#include <iostream>
int main() {
std::vector<int> v1 = { 1, 2, 3 };
std::vector<int> v2 = { 1, 2, 3 };
if (v1 == v2)
std::cout << "arrays are equal\n";
}

关于c++ - 使用指针比较数组中的元素 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54878067/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com