参照しないポインタ

そういえば、参照しないためのポインタというのも有り得たな。

int *search(int key, int *first, int *last)
{
     int *p;
     for (p = first; p != last; p++) {
         if (*p == key) return p;
     }
     return last;
}

last は値そのものに意味があるわけで、決して参照するためのポインタではない。
ちなみに使う側はこんな感じ。

int a[N];
int *p;
int key;
/* do something */
p = search(key, a, a + N);