二维数组的 每行的元素个数必须一样吗?

二维数组的 每行的元素个数必须一样吗?每列的元素个数呢?如果不一样请问在内存中是怎样储存的?
最好举例说明
谢谢

第1个回答  2009-08-06
每行元素的空位是一样的。但是具体元素个数可以不一样。
比如
char a〔2〕〔30〕={“Hello”,"It's me"}
这两个元素个数就不一样

不一样的时候,每行的字符都是按行首地址存。存到‘\0',然后后面的元素空位
还是按char a〔2〕〔30〕={“Hello”,"It's me"}
来考虑
首先hello存在a[0][0],也就是第一行的首地址开始。然后连续存字母
其实相当于'h','e','l','l','o','\0',分别代表a[0][0],a[0][1]..a[0][5]
然后第二个字符串。存在第二行的首地址,然后连续存
从a[1][0]开始,遇到’\0'结束。

不一样的时候要按照行首地址来进行存储。本回答被提问者采纳
第2个回答  2009-08-06
二维数组的话每行的元素个数都相同,你可以不给它初值,但那个单元已经存在,如果是整型数组的话用0来填充,如果是字符的话用'\0'来填充;
int a[2][3]={{1,2,3},{4,5,},{6}};
char c[2][10]={"china","beijing"};
其实在内存中是按行连续存储的,为了看清楚我按行列形式输出:
1 2 3
4 5 0
6 0 0
'c','h','i','n','a','\0','\0','\0','\0','\0' 和 'b','e','i','j','i','n','g','\0','\0''\0'
第3个回答  2009-08-06
占用单元一样,都占用列数那么多个单元,没有的就用“\0”表示!
第4个回答  2009-08-06
二维数组,每行元素个数当然一样了

int a[10][5];
10 行,5 列
相似回答