请问C++中二维数组的问题
PHPz
PHPz 2017-04-17 11:48:31
0
2
554

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

PHPz
PHPz

学习是最好的投资!

全部回覆(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和你實際初始化的資料為數組分配空間;如果你連初始化也沒做,系統直接傻眼,不知道該分配多少空間了,所以編譯報錯。

小葫芦

雷雷

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板