По какой-то причине моя функция LinearSearch
получает только первый элемент массива, который проходит. Я нашел это, поставив точку останова в функции и посмотрев на локали, которые у нее есть, и я не знаю, почему это только получение 7
из массива a
. Тест у меня есть следующие (GoogleTest):Только один элемент массива передается в функцию. C++
TEST(LinearSearch, ElementExists2Items) {
// LinearSearch should return a pointer to the item if it exists in the array.
int a[2] = {7, 2};
EXPECT_EQ(a, LinearSearch(a, 2, 7));
EXPECT_EQ(a + 1, LinearSearch(a, 2, 2));
}
Вот моя LinearSearch
функция:
int* LinearSearch(int theArray[], int size, int key) {
if (size == 0)
return nullptr;
for (int i = 0; i < size; i++) {
if (key == theArray[i])
return (theArray);
else
return nullptr;
}
}
ли я что-то отсутствует? Нужно ли передавать theArray
по ссылке? Я не знаю, почему это только первое значение, переданное в функцию.
Ну, теперь я все ближе, но я до сих пор не совсем там. Я переместил 'return nullptr' за пределы массива и добавил эту строку:' else if (key! = TheArray [i]) continue; ', но он все равно не работает ... просто не возвращает значение null. – WitchKing17
любые идеи отсюда? – WitchKing17
Во-первых, вы должны вернуться (theArray + i). (theArray) возвращает только указатель на начало массива, который у вас уже есть. Вам не нужна дополнительная инструкция else. Проверьте раздел обновления –