搜索数组并返回指向单个元素的指针

时间:2018-12-30 21:02:28

标签: c++ arrays pointers reference iteration

我正在尝试编写一些函数来处理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";
    }
  }
}

1 个答案:

答案 0 :(得分:0)

数组的名称是我认为必须这样写的第一个元素的地址

int * PointsToArray = myArray;