[英]Comparing elements in the array by use of pointers (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";
}
您將compare_arrays函數主體放置在main函數內部。 從主體中刪除函數主體,然后從主體函數內部調用它。 另外,將分號放在if語句和函數標頭之后,這是錯誤的。 您的代碼應該像這樣
#include <iostream>
using namespace std;
int size1 = 3, size2 = 3;
int arr_one[] = { 1, 2, 3 };
int arr_two[] = { 1, 2, 3 };
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() {
cout << compare_arrays(arr_one, size1, arr_two, size2) << endl;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.