首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++初始化的有关问题?

2013-11-02 
c++初始化的问题???第一种情况第二种情况(变成了指针数组)第三种情况 对的情况const int MONTHS 12cons

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++ 也是可用的。

热点排行