求大神找到下面代码中的代码的错误,并改正!

#include
#include
#include
typedef struct
{
int a;
int b;
} DOUBLE_INT, *Double_int;

Double_int a[4];

int main()
{
int i;

for ( i=0; i < 4; i++)
{
    a[i]->a = (i+1);

    a[i]->b = (i+1)<<1;

}

for ( i=0; i < 4; i++)

{
    if (a[i]-> a & 1)

        printf("a is Odd : a.a = %d a.b = %d\n",a[i]->a,a[i]->b);

    else

        printf("a is even: a.a = %d a.b = %d\n",a[i]->a,a[i]->b);
}
return 0;

}

for ( i=0; i < 4; i++)
{
a[i]->a = (i+1);

a[i]->b = (i+1)<<1;

}这里面 a[i]没有分配内存。

for ( i=0; i < 4; i++)
{
a[i] = new DOUBLE_INT();
a[i]->a = (i+1);

a[i]->b = (i+1)<<1;

}