【发布时间】:2013-09-10 18:11:31
【问题描述】:
在 K&R 的第 6 章中,我们讨论了通过指针访问结构的元素。我们得到一个函数:
struct key *binsearch(char *word, struct key *tab, int n)
{
int cond;
struct key *low = &tab[0];
struct key *high = &tab[n];
struct key *mid;
while (low < high) {
mid = low + (high-low) / 2;
if ((cond = strcmp(word, mid->word)) < 0)
high = mid;
else if (cond > 0)
low = mid + 1;
else
return mid;
}
return NULL;
}
在这个程序的早期版本中,我们不使用指针,我们可以将mid 计算为mid = (low+high)/2,但现在我们需要将mid 计算为mid = low + (high-low) / 2
我知道你不能添加指针,因为逻辑上结果没有返回任何有用的东西,但我不明白的是我们不是还在用mid = low + (high-low) / 2添加指针吗?我们将low 添加到(high-low)/2 的结果中?
【问题讨论】:
标签: c pointers pointer-arithmetic