1
heart4lor 2020-02-02 12:34:57 +08:00 1
字符串是一个字符数组,就是你所说的第三维
|
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 1
因为字符串就是一个字符数组,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 1
如果要去掉结尾的 [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 1
@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 类型方便开发者使用
|