Просто увеличение void*
действительно работает в gcc:
#include <stdlib.h>
#include <stdio.h>
int main() {
int i[] = { 23, 42 };
void* a = &i;
void* b = a + 4;
printf("%i\n", *((int*)b));
return 0;
}
Хотя это концептуально (и официально) неправильно, поэтому вы хотите сделать это явным: приведите его к char*
и затем обратно.
void* a = get_me_a_pointer();
void* b = (void*)((char*)a + some_number);
Это делает очевидным, что вы увеличиваете количество байт.