3
어떤 이유로 든 내 함수 LinearSearch
은 전달되는 배열의 첫 번째 요소 만 가져옵니다. 함수에 중단 점을 넣고 해당 지역의 객체를 보면이 사실을 알았습니다. 이유는 모르겠습니다. 배열 a
에서 7
만 가져옵니다.배열의 한 요소 만 함수로 전달됩니다. 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;
}
}
내가 뭔가 실종 내가 가진 테스트 케이스는 다음 (GoogleTest)인가? 대신 참조로 theArray
을 전달해야합니까? 왜 함수에 전달 된 첫 번째 값만 가져 오는 지 알 수 없습니다.
글쎄, 지금은 가까워지고 있어요,하지만 난 꽤 여전히입니다. 배열의 외부에서'return nullptr'을 옮기고 다음 줄을 추가했습니다 :'else if (key! = theArray [i]) continue;', 그러나 여전히 실패 ... 그냥 null을 반환하지 않습니다. – WitchKing17
여기에서 아이디어가 있으십니까? – WitchKing17
먼저 (theArray + i)를 반환해야합니다. (theArray)는 이미 가지고있는 배열의 시작 부분에 대한 포인터 만 반환합니다. 다른 else 문은 필요하지 않습니다. 업데이트 섹션을 확인하십시오 –