Ich glaube, der Trick, den du suchst, ist, dass du den Pointer mit einem Array-Literal initialisierst (geht erst ab C99):
#include <stdio.h>
struct foo {
int* bar;
int* baz;
};
struct foo foo = {
.bar = (int[]) { 1, 2, 3 },
.baz = (int[]) { 4, 5, 6 },
};
int main(void)
{
printf("%d - %d - %d \n",
foo.bar[0], foo.bar[1], foo.bar[2]);
printf("%d - %d - %d \n",
foo.baz[0], foo.baz[1], foo.baz[2]);
}