3
なんらかの理由で、私の関数LinearSearch
は渡されている配列の最初の要素しか取得していません。関数にブレークポイントを置き、それが持つローカルを調べることでこれを見つけました。配列a
からは7
しか得られません。私が持っているテストケースは(GoogleTest)以下の通りです:ここでは配列の1つの要素だけが関数に渡されます。 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; '、しかしそれでも失敗します。 – WitchKing17
ここから任意のアイデアですか? – WitchKing17
まず、(theArray + i)を返す必要があります。 (theArray)は、すでに持っている配列の先頭へのポインタだけを返します。追加のelse文は必要ありません。更新セクションを確認してください –