, 우리는 포인터에 의해 구성 요소의 액세스를 통해 간다. 우리는 기능이 제공됩니다 : 우리는 포인터를 사용하지 않은 경우K & R 포인터 조작
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 = (low+high)/2
로 mid
를 계산할 수 있지만 지금은 내가 이해 mid
mid = low + (high-low)/2
로 계산해야 논리적으로 유용한 결과를 반환하지 않기 때문에 포인터를 추가 할 수 없습니다. 그러나 이해할 수없는 것은 여전히 포인터를 추가하지 않는 것입니까? mid = low + (high-low)/2
? (high-low)/2
의 결과에 low
을 추가하고 있습니까?
[읽기] (http://stackoverflow.com/questions/394767/pointer-arithmetic?rq=1). – WhozCraig