2017-04-19 25 views
0

我是C++新手,很抱歉,如果之前已經詢問過,但我找不到它。 爲什麼我們使用指針而不是簡單地創建一個特定大小的數組?爲什麼我們使用指針而不是簡單地創建一個特定大小的數組?

int** ary = new int*[rowCount]; 
    for(int i = 0; i < rowCount; ++i) 
    ary[i] = new int[colCount]; 

int ary[rowCount][colCount]; 

什麼是兩者之間的區別? 我知道第一個在堆內存上工作,第二個在堆棧上工作,但爲什麼大多數人使用第一種方法?

+0

該語言的效率/能力使您可以使用內存位置而不是巨大的數據對象...... –

+0

因爲您是C++的新手,您肯定會找到有關專業人員(和陷阱)的更多信息,通過記憶來指代事物的位置...... –

+0

試想一下。你要在桌子上放一堆塊。桌子上有一大堆垃圾。你是否寧願:1)把所有的塊都粘在一起,然後必須在桌子上四處移動,以便它適合......或者2)將塊放在桌子上,然後記住塊在哪裏。在這兩種情況下,你對任何一個街區都一無所知,但你知道它們都在哪裏。處理問題時的一個問題是,當你處理完塊時,在這兩種情況下你都想記住刪除所有的塊。 – Fallenreaper

回答

1

一個區別是,如果rowCount和colCount均爲constant expressions,則第二個只能編譯。另見Array declaration

另一方面,即使這些變量在運行時發生變化,第一個也會編譯。

順便說一句,如果你使用的是C++,你最好使用std::vector的第一個選項,std::array第二,這一切都是類似於C.。

+0

爲什麼downvote? –

相關問題