C++字符数组的问题
char *words[]={"test","Test2","Test3","Test4"};
char words[][]={"test","Test2","Test3","Test4"};
这两个不应该都可以么?为什么第一个可以,第二个编译有错误呢?
[解决办法]
二维数组要确定第二维的维度。
[解决办法]
第一个可以这样理解
word是一个数组。数组里面粗放的是char * 类型
一位数组是允许在初始化的时候不指定大小的
[解决办法]
char *words[] //存的是指针 大小固定
char words[][]={"test","Test2","Test3","Test4"}; //元素长度编译器不知道 所以要得补上列数
[解决办法]
char *words[]={"test","Test2","Test3","Test4"}; //存的是指针 大小固定 编译器可以计算出缺省的长度
[解决办法]
无论是一维数组还是二维数组,在内存中都是连续存储的,当是一维的时候编译器明确是一位一位地开辟空间和读取,但是二维的,你不指出的话编译器是不知道一次读取几位的,例如你的第二个那个例子,编译器可以两位两位的都,也可以三位三位的,也可以n位地读取,因此我们要告诉编译器怎样开辟内存空间,以及怎样读取,至于你的第一个例子,无非是指针数组罢了,也是一种数组,和我说的不矛盾,希望你能理解哈。。。
[解决办法]
同意