http://zhidao.baidu.com/question/160587080
struct city{ char name[20]; double population; double housing; double ave; }; city cities[2]; cities[0]={"A",10000,11}; cities[1]={"B",20000,11}; 为什么不行啊?
问题补充:
city cities[2]={{"A",10000,11},{"B",20000,11}}; 我知道这种赋值方法,但我就是想问问什么上面那种不行?别的数组是可以的啊
答案
并不是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,可以忽略) 非定义处的只有重新赋值,没有初始化!