
1 heart4lor 2020-02-02 12:34:57 +08:00 字符串是一个字符数组,就是你所说的第三维 |
3 Cielsky 2020-02-02 12:42:25 +08:00 via Android 你这样想,一维是一行数据,比如 asdffg 二维是 m 行 n 列数据,是个矩形 三维就是个立方体了 打印字符串一维就够了啊 |
4 iTvX OP |
5 fengtons 2020-02-02 13:02:56 +08:00 via Android 因为字符串就是一个字符数组,char str[5]="nihao",再结合你想要的思考一下就明白了。 还有 C 语言多维数组规定最后一维必须要指定长度,所以你要填上[20] |
7 BingoXuan 2020-02-02 13:16:44 +08:00 完全不清楚你这个二维数组最基础的元素类型是什么。如果最基础类型是字符串(数组),那么实际是三维字符数组,二维的字符串数组。所以初始化就是 char b[2][2][20]。而如果是整型,那么就是 int b[2][2]。 |
8 yzwduck 2020-02-02 13:26:19 +08:00 如果要去掉结尾的 [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-02-02 14:02:21 +08:00 “nihao”本身就是一个一维数组了,你定义的 char b[2][2][20] = { {"nihao","sdf"}, {"sdfs","dsfsf"} }; 可以理解成每个元素都是一个一维数组的二维数组(实际上就是三维数组) |
13 iTvX OP |
14 netstu 2020-02-02 15:09:21 +08:00 一楼直接说明白了啊 |
15 Cielsky 2020-02-02 15:10:05 +08:00 是这样,你需要多看书 钻牛角尖了 看到指针,你就知道啥意思了 |
16 mxalbert1996 2020-02-02 15:37:52 +08:00 via Android @iTvX 你这里的字符串类型实际上是 char[],所以字符串类型的二维数组实际上就是 char 类型的三位数组。 |
17 fengtons 2020-02-02 17:27:25 +08:00 via Android @iTvX C 语言里没有字符串这种类型,字符串就是字符类型的数组,所以具体到你的问题就是个字符类型的三维数组 |
18 MadHouse 2020-02-02 21:44:45 +08:00 via Android 你搞混了 char 和 string, 所以 c++才加了 string 类型方便开发者使用 |