struct city
{
double population;
double housing;
double ave;
};
city cities[2];
cities[0]={22,10000,11};
cities[1]={22,20000,11};
这里与结构体匹配了,但是同样不可能通过
原因是C\C++语法是禁止结构体这样赋值的!!
你提到了初始化,的确结构体数组初始化是可以通过大括号这种形式进行初始化的,但是一定要注意
类似这样的语句,不是初始化,而是重新赋值!
cities[0]={"A",10000,11};
cities[1]={"B",20000,11};
结构体数组的初始化在
city cities[2];
这一句的时候就完成了(初始化了cities[0]和cities[1]这两个元素)
所以正确的初始化格式应该如下:
city cities[2] = {{"a", 1,1,1}, {"b", 1,1,1}};
// 还要注意一点,你问题处的成员少给了一个,结构体里有三个double,你只给了两
记住一点:
初始化永远是在定义的时候完成的,
(或者如果是类的成员变量,其初始化是在构造函数的初始化列表中完成,如果你学的是C,可以忽略)
非定义处的只有重新赋值,没有初始化!
/////////////////////////////////////////////
补充:别的数组?那也是不行的
你可以把别的数组这样赋值的代码发一下?
结构体初始化可以再定义时制定初始值,如:
struct
student
{
int num;
char name[20];
} student1 =
{10001,"zhangxin"};
也可以采取申明类型与定义变量分开的形式,在定义变量时进行初始化:
student student1 =
{10001,"zhangxin"} 。
在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data
type)的一类。
结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。
同学,你注意到了Create()函数里面,你又定义了一句:
List pr;了么?这句话时关键,首先,你在main 函数(我猜应该是main吧)中写道:
List pr1=Creat("p1",2,1);Insert(&pr1);
看,你这个pr1是个局部变量吧?只在main()中有效的。而你上面那个Create中定义的呢?也是个局部变量,只在Create()中有效。所以,即使你在Create()中费劲全力为pr赋值。等调用完Create()后,pr还是会消亡的,回到main,时,这里的pr1就是另一个List变量了。
总而言之,Creat()里面的pr和main()里面的pr1是完全不同的两个变量。要想让他们变成一个变量。可选用指针传参。或者定义成全局变量。
另外,我一看到你的描述的那个“烫”字,就知道你用的是VC60吧?呵呵
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)