Вы должны выделить память просто и правильно, как:
typedef struct {
int a;
int b;
} mystruct;
mystruct *initialize(size_t numElem)
{
return calloc(numElem,sizeof(mystruct));
}
void assign (mystruct * m1,mystruct * m2)
{
*m1=*m2;
}
mystruct * add (mystruct * m1, mystruct * m2, mystruct *sum)
{
sum->a=m1->a+m2->a;
sum->b=m1->b+m2->b;
return sum;
}
...
mystruct sum ={3,4} , *x = initialize(10);
assign( &x[0], &sum );
assign( &x[1], &x[0] );
add( &x[0], &x[1], &sum );
printf(" %d %d ", sum.a, sum.b );
...
free( x );