2011-06-04 53 views
1

我编写了这个函数,它使用二分查找来查找结构数组中的特定值。为什么不编译?二进制搜索结构数组中的特定值

我得到这个错误:

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

这是什么语言? C? – 2011-06-04 09:09:24

+0

Id是什么类型?\ – 2011-06-04 09:09:56

+0

id是整数i是指%d,是的这是c ... – talmordaniel 2011-06-04 09:11:03

回答

1

如果要搜索“数组”pArr,则需要将括号直接放在标识符的后面。这应该工作:

pArr[middle].Id 
+0

那好像工作正常..我想这个问题是我没有把括号放在正确的位置..这是修正行if(val == pArr [middle] .Id) \t \t return middle; \t \t else if(val talmordaniel 2011-06-04 09:20:39

2

Your probl EM是这样一句话:

pArr->Id[middle] 

它看起来像,但我没有近足够的信息,你的会员ID是不是指针或数组,而仅仅是一个变量。所以你不能使用operator[]来访问它。你应该告诉我们这个Field物体是什么样的。

我猜你应该做这样的

(pArr + middle)->Id东西,所以这将访问您传递到你的函数领域数组的元素。然后,您必须传递一个实际的Field结构数组,才能正常工作。

+0

这是字段struct:typedef结构字段 { char Id; 坐标位置; int area; int price; } Field; – talmordaniel 2011-06-04 09:13:51

+0

我不是一个数组,你不能用'operator []'来访问它,就像我说的 – 2011-06-04 09:14:57