呵呵,问一个C语言中二维数组的问题。

呵呵,问题一、我是菜鸟,为什么C语言中有一、二维数组还有字符数组?感觉好蒙,不要复制资料请用自己的总结通俗易懂的讲讲。
问题二、例题一中画有红线的1.2.3.4.5二维数组得出的值不懂?不懂在于二维数组a[3][3]不是三行三列吗,只有{{1},{2},{3}}是怎么得出图中的值的?b[3][3]={4,5,6}和a[3][3]={{1},{2},{3}}中赋的值大括号是有什么区别啊?
问题三、strcat(s1,s2)和strlen不懂,看书听讲时就没听懂。请就此例题二通俗的讲讲。

    几维可以考虑理解为矩阵。a[2][3]是一个二行三列的矩阵。这个是数据的“形状”。“字符”数组是指这数组中的数据是“字符”这种数据“类型”。类型和形状讲的2回事。当然了,实际上a[x][y]中指的有这么一个数组a[x],x中y个元素。

    如果按矩阵来理解则

                |[0][0],[0][1],[0][2]|

    a[3][3]=|[1][0],[1][1],[1][2]|

                |[2][0],[2][1],[2][2]|

    ->定义时a[x][3]={{1},{2},{3}},其中“{1}”中的{}为某一行里面所有元素的组合,即{1}代表矩阵中第一行的所有数据,因为只有一个,而没有特定说明下数据是由左向右填充的,所以a[0][0]=1。

    ->b因为只有一个{},在填充数据时没有特别说明,所以{}中的数据将按每行3个数据的个数进行填充,如果定义b时{}中有4个数字,则第4个数将填充到b[1][0]中。

    strcat和strlen自己baidu去,库函数。

追问

呵呵,上面的回答就提问解答得全面、易懂。你的回答好好,希望加百度hi好友让以后更好提问向你学习。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-02

    一维数组存放相同的值,但是如果是矩阵,行列式等类型的,用二维的就比较方便了.至于字符数组,只是说明它里面存放的元素是字符而已.

    注意{{1},{2},{3}}里面的1,2,3是有{}的,在本题中表示每一行中的第一个元素分别为1,2,3.剩下的元素如a[1[2],a[2][2]等就默认是0了.而b[3][3]={4,5,6}这只有一个{},把4,5,6都包进去了。,表示b[0][0],b[0][1],b[0][2]分别为4,5,6.剩下的都为0了.

    strcat(s1,s2)是将第二个字符串复制到第一个字符串后面,拼成一个字符串.复制完成后,函数会添加'\0',表示字符串的结束.所以执行完strcat(s1,s2)后实际结果为123ABCDE\0.用strlen取长度,自然就是8了

追问

呵呵,加百度hi好友更好提问。好好的回答,希望以后更好的向你学习。

追答

好啊

本回答被提问者采纳
第2个回答  2013-12-02
问题一:其实没必要有二维数组,字符数组可以存放字符
问题二:a的赋值结果为a[0][0]=1,a[1][0]=2,a[2][0]=3,其余为0,如果不写大括号则依次赋值b[0][0]=4,b[0][1]=5,b[0][2]=6,写大括号则每个大括号代表一行
问题三:strcat函数用来连接两个字符串s1、s2,strlen用来计算字符串长度(不含结尾“\0”)
相似回答