4 回答
asd8532
TA贡献143条经验 获得超187个赞
将二维数组当作参数的时候,必须指明所有维数大小或者省略第一维的,但是不能省略第二维或者更高维的大小,这是由编译器原理限制的。事实上,编译器是这样处理数组的:
设有数组int a[m][n],如果要访问a[i][j]的值,编译器的寻址方式为:
&a[i][j]=&a[0][0]+i*sizeof(int)*n+j*sizeof(int); //注意n为第二维的维数,
因此,可以省略第一维的维数,不能省略其他维的维数。
在定义二维数组的时候对其进行初始化,也可以省略第一维,编译器会根据你的初始化语句自动决定第一维度。
玄幻痴迷
TA贡献2条经验 获得超2个赞
二维数组存储的时候是"先行后列",, 如果不指定列数, 它就不能知道一行放几个数据了。
在初始化的时候,第二维的数字代表分配内存的长度,第一维的数字代表分配内存倍数;
倍数可以让机器去数,但长度没有的话就不好开辟空间了。
- 4 回答
- 2 关注
- 8201 浏览
添加回答
举报
0/150
提交
取消