Aus irgendeinem Grund erhält meine Funktion LinearSearch
nur das erste Element des Arrays, das übergeben wird. Ich fand dies, indem ich einen Haltepunkt in die Funktion setzte und die Einheimischen betrachtete, die es hat, und ich weiß nicht warum es wird nur die 7
aus dem Array a
bekommen. Der Testfall ich habe, ist folgendes (GoogleTest):Nur ein Element des Arrays wird in Funktion übergeben. 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));
}
Hier ist meine LinearSearch
Funktion:
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;
}
}
bin ich etwas fehlt? Muss ich theArray
stattdessen als Referenz übergeben? Ich weiß nicht, warum nur der erste Wert an die Funktion übergeben wird.
Nun, bekomme ich bin jetzt näher, aber ich bin ganz da noch nicht. Ich habe das 'return nullptr' außerhalb des Arrays verschoben und folgende Zeile hinzugefügt:' else if (key! = TheArray [i]) continue; ', aber es schlägt immer noch fehl ... gibt einfach nicht null zurück. – WitchKing17
irgendwelche Ideen von hier? – WitchKing17
Zuerst sollten Sie zurückkehren (theArray + i). (theArray) gibt nur einen Zeiger auf den Anfang des Arrays zurück, das Sie bereits haben. Sie benötigen keine zusätzliche else-Anweisung. Überprüfen Sie die Update-Sektion –