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