Потому что указатель начинает указывать на следующий элемент той размерности, для которой указатель создавался. Сделаете unsigned char* - будет на размер char увеличиваться (1 скорее всего), unsigned long long* - на 8. void* скорее всего вообще не даст такой фокус провернуть (и правильно сделает).