结构体数组初始化

结构体数组初始化,第1张

并不是aleda所说的原因,你可以试一下,即便不要结构体不要字符串
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吧?呵呵


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/13395025.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-28
下一篇 2023-07-28

发表评论

登录后才能评论

评论列表(0条)

保存