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