In a K&R ebook I've been reading I came across this code:

And my concern was in the line:
allocbuf + ALLOCSIZE - allocp >= n
The code takes the address of where the buffer begins and calculates, using the index of the pointer to itself as well as the maximum buffer length constant defined above, the total remaining allocations.
Now, I understand that if you were to define a character pointer, for example, then were to arithmetically increment it by one:
char *ptr = "array";
ptr++;
Then you would get the second position, 'r' above, in memory. The, in memory, actually increments by sizeof(char) units.
So, given that arrays operate under the guise of pointers:
allocbuf + 10000
Is the final allocated slot in the array, correct? Since the pointer is of type char, 10000 'slots' later is actually 10,000*sizeof(char) slots later.
To clarify this concept in my mind, given a random memory address say 4210720, does 4210721 represent a bit, byte or some other metic past the address?
That is:
void *ptr = "sherrellbc";
ptr++;
Where is ptr now? Is it at some pointer between the 's' and 'h' since type void gives no information regarding step length (as in, a char pointer would increment by sizeof(char)).
In essence, what metric is memory stored using? Bits bytes, nibbles, etc?