c++初始化的问题???
第一种情况
第二种情况 (变成了指针数组)
第三种情况 对的情况
const int MONTHS = 12;
const char *month[MONTHS] = {"January", "February", "March", "April",
"May", "June", "July", "August", "September",
"October", "November", "December"};
为啥会是这样的??
[解决办法]
第一种情况,char month[MONTHS];声明了一个12个字符的数组,与你给出的初始化列表矛盾;
第二种情况,新的C++标准中,字符串常量默认为const, "January" 是一个字符串常量,默认为 const char *, 当你把它assign to一个非常量的变量,自然会报错。
第三种解决了上面的问题。
[解决办法]
1)用二维数组
const int MONTHS = 12;
const int SIZE_MONTHS =10;
const char month[MONTHS][SIZE_MONTHS] = {"January", "February", "March", "April",
"May", "June", "July", "August", "September",
"October", "November", "December"};
2) 指针数组
const int MONTHS = 12;
const char *month[MONTHS] = {"January", "February", "March", "April",
"May", "June", "July", "August", "September",
"October", "November", "December"};
这两种都比较常用。
下面这种也有人用。
3)指针数组,数组大小不确定。
const int MONTHS = 12;
const char *month[] = {"January", "February", "March", "April",
"May", "June", "July", "August", "September",
"October", "November", "December"};
其中,第二种不必关心,每个字符串长度。对于字符串长度,可能会改变的比较合适。
而且,程序的字符串长度,会字会自动适应,不会多占用内存。
第三,既不关心,数组大小,也不关心字符串长度,对于可能会添加数据的情况,最合适。
第一种,对于固定数据最合适,因为永远也不会改动。
这几种,都是C的用法,C++ 也是可用的。