このソースだけだとTESTをポインタのポインタにする意味が無いんだけど、
void set( TEST *test )
{
  test = ( TEST )malloc( sizeof( TEST ) * 2 );
  test[0]->x = 1;
  test[1]->x = 2;
}

int main()
{
  TEST *test = NULL;
  set( test );
}
これじゃ駄目なの?