Поиск в массиве и возврат указателя на один элемент - PullRequest
0 голосов
/ 31 декабря 2018

Я пытаюсь написать некоторые функции для обработки массивов 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)

Я заимствовал синтаксис for (int i: arr), чтобы перебрать массив с неизвестным числом элементов из здесь .Цикл работал нормально, пока я не добавил функцию 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 голосов
/ 31 декабря 2018

имя массива - это адрес первого элемента, который, я думаю, вам нужно написать так:

int * PointsToArray = myArray;

...