我写了这个函数,它使用二进制搜索来查找结构数组中的特定值。为什么不编译?
我收到了这个错误:
prog.c:224: error: subscripted value is neither array nor pointer prog.c:226: error: subscripted value is neither array nor pointer
这是功能:
int FieldSearch(Field *pArr, int size, int val)
{
int low=0,high=size-1, middle;
while (low <= high)
{
middle = (low + high)/2;
if (val == pArr->Id[middle])
return middle;
else if (val < pArr->Id[middle])
high = middle -1;
else
low = middle +1;
}
return NOT_FOUND;
}
这是字段结构:
typedef struct field
{
char Id;
Coordinates location;
int area;
int price;
} Field;
也许原型是错的......
答案 0 :(得分:2)
你的问题是这句话:
pArr->Id[middle]
看起来像,但我没有足够的信息,你的成员Id不是指针或数组,而只是一个变量。因此,您无法使用operator[]
访问它。您应该向我们展示这个Field
对象的样子。
我猜你应该做这样的事情
(pArr + middle)->Id
所以这将访问传递给函数的Field数组的元素。然后你必须传入一个Field
结构的实际数组,以便工作。
答案 1 :(得分:1)
如果要搜索“数组”pArr,则需要将括号直接放在标识符后面。这应该有效:
pArr[middle].Id