q - p - 250.
2000 - 1000 = 1000
1000 / sizeof(int) = 250
арифметика указателя, если sizeof (int) - 4. Edit: OK, чтобы уточнить. В C, когда два указателя имеют один и тот же тип, тогда разница между ними определяется количеством вещей между указанным типом между ними. Например,
struct foo { int ar[1000]; } big[10];
char small[10];
struct foo *fs, *fe;
char *ss, *se;
fs = &big[0]; fe = &big[9];
ss = &small[0]; se = &small[9];
fe - fs == se - ss;
То есть разница между двумя указателями в этом случае - это количество элементов массива между ними. В этом случае это 0, 1, ... 8 или 9 элементов.