出于某种原因,我的函数LinearSearch
只获取了传入数组的第一个元素。我通过在函数中放置一个断点并查看它所具有的局部函数来找到它。 ,我不知道为什么它只从阵列7
获得a
。我的测试用例如下(GoogleTest):
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
吗?我不知道为什么它只将第一个值传递给函数。
答案 0 :(得分:3)
你是第一次回来。
解决方案或更确切地说是
for (int i = 0; i < size; i++) {
if (key == theArray[i])
return (theArray);
//if it cannot find it the very first time, it returns null IN YOUR CASE :)
}
return nullptr;
你的案例
想想执行。它第一次没有找到它立即返回并退出该功能。因此它只看到一个元素。
for (int i = 0; i < size; i++) {
if (key == theArray[i])
return (theArray);
else
return nullptr;
}
更新
for (int i = 0; i < size; i++) {
if (key == theArray[i])
return (theArray + i);
// you currently pass the pointer to the start of the array again and again. Pass the pointer to the element instead.
}
return null;