请问C++中二维数组的问题

C++中 二维数组如何初始化为空的?
这样可以吗?
int temp[][3]={};
求教 谢谢!

莫回无
浏览 954回答 2
2回答

慕莱坞森

C++没有“空数组”这一说,事实上你也不需要真正为空的数组。数组就是用来读写的,空着有什么用?如果你不想看到数组中的某些元素,不读它就行了。声明一个数组,系统就在栈上为你分配一块相应大小的空间。如果数组初始化了,比如说这样    int temp[][3] = {0};那么这块空间里都被写入了0。但是,这种声明方式缺少了第一维,所以给人造成困惑:这块空间到底是多大呢?一般来说,应该是3*sizeof(int),也就是说,这个数组里面被填充了3个0。如果这样初始化:    int temp[][3] = {0, 1, 2};数组的大小还是3*sizeof(int)。但是,如果这样初始化呢:    int temp[][3] = {0, 1, 2, 3};这块数组的大小就是6*sizeof(int)。原因是:原本声明了3列,但是初始化的时候有4个int,于是系统自动又为数组添了一行。同理,如果这样初始化:    int temp[][3] = {0, 1, 2, 3, 4, 5};那么数组大小还是6*sizeof(int),而这样初始化:    int temp[][3] = {0, 1, 2, 3, 4, 5, 6};这时,数组大小就是9*sizeof(int)了。但是,如果你不对数组进行初始化,比如说这样:    int temp[][3];一般是编译不过的。原因很简单,如果同时给出了第一维m和第二维n,那么数组空间就按照m*n个int来分配;如果只给出第二维n,那么系统需要综合考虑n和你实际初始化的数据为数组分配空间;如果你连初始化也没做,系统直接傻眼,不知道该分配多少空间了,所以编译报错。

皈依舞

int temp[这里必须要有一个数字][3]={0};
打开App,查看更多内容
随时随地看视频慕课网APP