c++ - 使用指针比较数组中的元素 (C++)
问题描述
我正在创建函数 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";
}
推荐阅读
- python-3.x - Setup.py - 将所有文件安装到 lib
- android - 如何在cardview上创建三角形间隙?
- c# - Visual Studio AssemblyInfo.cs(8,12,8,21) 中的人脸问题:错误 CS1112
- c++ - 使用不同 CRT 将新 C++ 代码与旧(二进制)组件隔离的最佳方法是什么?
- email - OAuth2 IMAP 访问 GMail 服务帐户
- amazon-web-services - 在 ec2(spot-fleet) 中运行的任务在 ECS AWS 中使用的内存不超过 32GB
- r - 为ggplot图中的每一行设置单独的alpha
- database - 如何在 Azure DevOps 持续部署中从我的数据库自动更新我的项目的模型?
- sql - 如果 table2 包含更多,则 Oracle SQL 将 table1 与 table2 联合,结果为空
- linux - 使用busybox上的find将多个文件复制到当前目录