我正在尝试编写一些函数来处理C ++数组(出于此分配的目的,不允许使用std :: vector-仅使用iostream,算法,字符串和数组)。
但是,当我运行这段代码时,我收到两条错误消息。
in.cpp:15:25:错误:初始化时无法将“ int()[5]”转换为“ int ” int * PointsToArray =&myArray;
当我尝试初始化指向myArray的指针时会发生这种情况。我猜想我的指针/引用声明语法肯定有问题,但是我尝试了“ int * PointsToArray”和“ int * PointsToArray”以及其他各种在星号周围进行间距的方式,但我无法弄清楚出了什么问题
另一个是这个。
main.cpp:22:15:错误:在此范围内未声明“ arr”,“ begin”,“ end” for(int i:arr)
我借用了for(int i:arr)语法,以遍历here中元素数量未知的数组。在添加searchPointer()函数之前,该循环工作正常。然后抛出此错误消息。
下面是我的代码,请帮忙。
#include <iostream>
#include <array>
using namespace std;
int searchArray(int array[], int targetInt);
//Iterates through an array & returns index of an element identical to target
int* searchPointer(int* arr, int targetInt);
//Returns a pointer to an element that matches the target
int main() {
int targetInt = 4;
int myArray[5] = {1, 2, 3, 4, 5};
int* PointsToArray = &myArray;
searchArray(myArray, targetInt);
searchPointer(PointsToArray, targetInt);
}
int searchArray(int array[], int targetInt) {
for(int i : arr) {
if (i == targetInt) {
int* x = find (std::begin(arr), std::end(arr), targetInt);
cout << "Your target " << targetInt << " found at index " << x << "\n";
}
}
return 0;
}
int* searchPointer(int* arr, int targetInt) {
for (int i : arr) {
if (i == targetInt) {
std::cout << "Target located at " << &targetInt << " in memory\n";
}
}
}
答案 0 :(得分:0)
数组的名称是我认为必须这样写的第一个元素的地址
int * PointsToArray = myArray;