Цитата(Олег. @ May 2 2008, 08:17)

unsigned long int a[] = {1, 2, 3, 4, 5};
unsigned long int b[5];
void* ptr = a;
b[0] = *((unsigned long int*)ptr)++;
b[1] = *((unsigned long long int*)ptr)++;
unsigned long int a[] = {1, 2, 3, 4, 5};
unsigned long int b[5];
unsigned long * ptr = a;
b[0] = (*ptr)++; // или же м.б. b[0] = *ptr++; или b[0] = *(ptr++); Что Вы хотите - Вам виднее.
b[1] = *ptr++;
PS. Все современные языки борются с указателями неявного типа. Это источник глюков.
Цитата(zltigo @ May 2 2008, 12:38)

Без "кажется" - компилятор который молча инкрементирует указатель на неизвестный объект не может быть признан компилятором

И я о том же.
Цитата(777777 @ May 2 2008, 18:58)

А почему бы не сделать сразу этот указатель на unsigned long - и не придется ничего преобразовывать?
Наверное, для науки надо (как делать не надо).