C++字符数组的问题

刀刀亮 2012-08-11 11:44:45
char *words[]={"test","Test2","Test3","Test4"};
char words[][]={"test","Test2","Test3","Test4"};
这两个不应该都可以么?为什么第一个可以,第二个编译有错误呢?
...全文
110 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
rmaly 2012-08-11
  • 打赏
  • 举报
回复
同意
[Quote=引用 6 楼 的回复:]

无论是一维数组还是二维数组,在内存中都是连续存储的,当是一维的时候编译器明确是一位一位地开辟空间和读取,但是二维的,你不指出的话编译器是不知道一次读取几位的,例如你的第二个那个例子,编译器可以两位两位的都,也可以三位三位的,也可以n位地读取,因此我们要告诉编译器怎样开辟内存空间,以及怎样读取,至于你的第一个例子,无非是指针数组罢了,也是一种数组,和我说的不矛盾,希望你能理解哈。。。
[/Quote]
willYanwill 2012-08-11
  • 打赏
  • 举报
回复
无论是一维数组还是二维数组,在内存中都是连续存储的,当是一维的时候编译器明确是一位一位地开辟空间和读取,但是二维的,你不指出的话编译器是不知道一次读取几位的,例如你的第二个那个例子,编译器可以两位两位的都,也可以三位三位的,也可以n位地读取,因此我们要告诉编译器怎样开辟内存空间,以及怎样读取,至于你的第一个例子,无非是指针数组罢了,也是一种数组,和我说的不矛盾,希望你能理解哈。。。
IVERS0N 2012-08-11
  • 打赏
  • 举报
回复
char *words[]={"test","Test2","Test3","Test4"}; //存的是指针 大小固定 编译器可以计算出缺省的长度
IVERS0N 2012-08-11
  • 打赏
  • 举报
回复

char *words[] //存的是指针 大小固定

char words[][]={"test","Test2","Test3","Test4"}; //元素长度编译器不知道 所以要得补上列数
xiaoji0507 2012-08-11
  • 打赏
  • 举报
回复
第一个可以这样理解

word是一个数组。数组里面粗放的是char * 类型

一位数组是允许在初始化的时候不指定大小的
刀刀亮 2012-08-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

二维数组要确定第二维的维度。
[/Quote]
那第一个要怎么解释?
未注销 2012-08-11
  • 打赏
  • 举报
回复
二维数组要确定第二维的维度。
刀刀亮 2012-08-11
  • 打赏
  • 举报
回复
谢谢楼上各位的回复。我明白了

65,186

社区成员

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

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