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

wocawuliao 2013-10-30 05:12:48
第一种情况
const int MONTHS = 12;
char month[MONTHS] = {"January", "February", "March", "April",
"May", "June", "July", "August", "September",
"October", "November", "December"};

当代码是这样时,会报这样的错误

第二种情况 (变成了指针数组)
 const int MONTHS = 12;
char *month[MONTHS] = {"January", "February", "March", "April",
"May", "June", "July", "August", "September",
"October", "November", "December"};

又出现这样的警告

第三种情况 对的情况
const int MONTHS = 12;
const char *month[MONTHS] = {"January", "February", "March", "April",
"May", "June", "July", "August", "September",
"October", "November", "December"};

为啥会是这样的??
...全文
147 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiesanyuan99 2013-10-31
  • 打赏
  • 举报
回复
我来看看,这个常量的
Luisfan 2013-10-31
  • 打赏
  • 举报
回复
引用 5 楼 zhao4zhong1 的回复:
不要纠结各种常量了,这个世界上唯一不变的就是变化。用API WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢!
不要纠结各种常量了,这个世界上唯一不变的就是变化。用API WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢!
赵4老师 2013-10-31
  • 打赏
  • 举报
回复
不要纠结各种常量了,这个世界上唯一不变的就是变化。用API WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢!
lm_whales 2013-10-31
  • 打赏
  • 举报
回复
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++ 也是可用的。
打你屁屁 2013-10-31
  • 打赏
  • 举报
回复
你定义的是字符数组啊,可以用CArray<CString, CString>,必须用char的话就用二维数组吧。
我的送神 2013-10-31
  • 打赏
  • 举报
回复
编码规范 定义数组变量最后用Const,防止被后面修改。
max_min_ 2013-10-30
  • 打赏
  • 举报
回复
1 字符串数组, 你给只是一个字符组 2 大括号里给的都是字符串常量,你初始化char*的时候类型不匹配 ,一些编译器是警告,一些可能是错误的!
seanxq 2013-10-30
  • 打赏
  • 举报
回复
第一种情况,char month[MONTHS];声明了一个12个字符的数组,与你给出的初始化列表矛盾; 第二种情况,新的C++标准中,字符串常量默认为const, "January" 是一个字符串常量,默认为 const char *, 当你把它assign to一个非常量的变量,自然会报错。 第三种解决了上面的问题。

64,652

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧