Вы должны быть в состоянии сделать это следующим образом:
int* a;
int* b;
char* c;
char A[N] = {/* data goes here */};
a = (int*)A;
b = (int*)(A+sizeof(int));
c = A + 2*sizeof(int);
Обратите внимание, однако, что приведение типов между различными целочисленными типами, как это, не является четко определенным поведением в C. Код будет уязвим для порядка,нет никакого указания, где закончится бит со знаком, все это может привести к представлению прерывания и т. д. и т. д.
Так что, если ваш конкретный компилятор не гарантирует, каким будет результат, код может потерпеть неудачу.И, конечно, он также непереносим.
РЕДАКТИРОВАТЬ: Обратите внимание, что вышеприведенный способ является более переносимым, чем использование указателя структуры, хотя указатель структуры выглядит более элегантно.Поскольку структура может содержать любое количество байтов заполнения в любом месте, поэтому нет никаких гарантий, что указатель Struc поймет, что указанная память выделена смежно.