C语言定义字符数组时有两个数组下标究竟是什么含义?

例如char ch[3][5]={"AAA","BBB","CCC"}; 这里面的[3][5]是想表示定义总共有3个元素,每个元素不超过5个字符的一维数组,还是说定义一个3行5列的二维数组?两个下标搞得好混乱,求大佬解答

第1个回答  2020-05-22
这是定义3行5列的二维字符数组。理解的时候,理解成总共有3个元素,每个元素是由5个字符组成的一维数组,也是可以的。如果用来存储字符串,则每个元素可以存储的字符个数,不能超过4个。因为得留最后一个存储位置来存储字符串结束字符('\0')。追问

如果要定义一个二维的字符数组呢,又该怎么表示

追答

ch不就是一个3行5列的二维字符数组吗?

一般的定义二维字符数组的方法是:char array[R][C]
R、C都是常量。

本回答被提问者采纳
第2个回答  2020-05-22

char ch[3][5]={"AAA","BBB","CCC"};

如果就以你这个代码来看,它可以用两种方式解答:

    三个长度最大为4的字符数组,这很明显

    一个3x5的二维数组。只不过因为类型是char所以可以用字符串的方式操作它。

其实单从变量角度来看,它就是一个数组,不管是二维还是一维。因为你可以用指针将这个二维数组以O(1)的复杂度转成一维数组。

无论如何,它最终到底表达什么意思,是要看你怎么用的。你要是以正常数组的方式使用,它就是正常的数组;你要是以字符串数组的方式使用,它就成字符串数组了。

追问

如果要定义一个二维的字符数组呢,又该怎么表示

本回答被网友采纳