1
heart4lor 2020 年 2 月 2 日 字符串是一个字符数组,就是你所说的第三维
|
3
Cielsky 2020 年 2 月 2 日 via Android
你这样想,一维是一行数据,比如 asdffg
二维是 m 行 n 列数据,是个矩形 三维就是个立方体了 打印字符串一维就够了啊 |
4
iTvX OP |
5
fengtons 2020 年 2 月 2 日 via Android 因为字符串就是一个字符数组,char str[5]="nihao",再结合你想要的思考一下就明白了。
还有 C 语言多维数组规定最后一维必须要指定长度,所以你要填上[20] |
7
BingoXuan 2020 年 2 月 2 日
完全不清楚你这个二维数组最基础的元素类型是什么。如果最基础类型是字符串(数组),那么实际是三维字符数组,二维的字符串数组。所以初始化就是 char b[2][2][20]。而如果是整型,那么就是 int b[2][2]。
|
8
yzwduck 2020 年 2 月 2 日 如果要去掉结尾的 [20] 的话,只需要把声明改成 char *b[2][2] = {{"a...", "b..."}, {"c...", "d..."}}。
如果声明是 char b[2][2][20],可以理解为它是 2x2 个长度固定为 20 字节的字符串,表达式 b[x][y] 实际上也是 b[x][y][0] 的地址; 反之,如果声明成 char *b[2][2],它是 2x2 个字符串指针,表达式 b[x][y] 是实际存放在这个数组里的一个值。 |
9
iTvX OP |
12
xiri 2020 年 2 月 2 日
“nihao”本身就是一个一维数组了,你定义的
char b[2][2][20] = { {"nihao","sdf"}, {"sdfs","dsfsf"} }; 可以理解成每个元素都是一个一维数组的二维数组(实际上就是三维数组) |
13
iTvX OP |
14
netstu 2020 年 2 月 2 日
一楼直接说明白了啊
|
15
Cielsky 2020 年 2 月 2 日
是这样,你需要多看书
钻牛角尖了 看到指针,你就知道啥意思了 |
16
mxalbert1996 2020 年 2 月 2 日 via Android @iTvX 你这里的字符串类型实际上是 char[],所以字符串类型的二维数组实际上就是 char 类型的三位数组。
|
18
MadHouse 2020 年 2 月 2 日 via Android
你搞混了 char 和 string, 所以 c++才加了 string 类型方便开发者使用
|