Поиск в массиве и возврат указателя на один элемент

Я пытаюсь написать некоторые функции для обработки массивов 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' не были объявлены в этой области для (int i: arr)

I заимствовал синтаксис for (int i: arr) для перебора массива с неизвестным числом элементов из здесь . Цикл работал нормально, пока я не добавил функцию searchPointer (); затем он выбросил это сообщение об ошибке.

Мой код указан ниже, пожалуйста, помогите.

#include 
#include 
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
задан G Y 30 December 2018 в 21:02
поделиться