求大神把下面代码中的错误搞定!!

#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;

}

#include

typedef struct {
int a;
int b;
} Double_int;

Double_int *a[4];

int main() {
int i;

for (i = 0; i < 4; i++) {
    a[i] = new Double_int;

    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;

}

代码上传成这样,忒不好看!!

指针定义后,在使用前要分配内存空间:使用 new 或 malloc;使用完毕后,经释放空间,否则会产生内存泄露:使用 delete 或 free。

指针定义后,在使用前要分配内存空间:使用 new 或 malloc;使用完毕后,经释放空间,否则会产生内存泄露:使用 delete 或 free。

首先要分清 指针、变量、地址、常量的概念;指针实质是存放地址的常量或变量;地址占用空间在不同机器上不同,可能是16位,32位或64位。
在你列出的代码中,创建了指针数组变量,其实质只是创建了一组变量,这些变量初始存放的是一组随机值;你应当为这些变量赋予地址,在这里,你应当为这些变量赋予DOUBLE_INT对象的地址。

typedef struct
{
int a;
int b;
} 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;

}

1、数据定义大小写要一致
2、分清指针和对象的定义Double_int a[4]是对象数组,初始化会为4个元素建立数据空间a[i].a调用,Double_int* a[4],只是4个指向数据结构的指针,
但是并没有初始化创建数据结构的对象,你调用a[i]->a直接报错,你必须这样初始化a[i] = new Double_int,或者使用其他的初始化方式。

Double_int a[4];

是指针数组,需要分配内存

指针定义后,在使用前要分配内存空间:使用 new 或 malloc;使用完毕后,经释放空间,否则会产生内存泄露:使用 delete 或 free。