2016-02-13 60 views
-4

有人可以告訴我,一般來說,下面在C中做什麼?使用數組的內存分配

H.L = new int* [H.n]; 

該命令是否在大小爲n的整數類型的H結構中創建L變量?

+1

請同時發佈struct的定義。沒有這個,沒有確切的東西可以說。然而,'new'用於分配動態內存並返回分配的第一個索引元素的地址,然後可以將其存儲在指針中,然後通過它訪問。 –

+0

它不會在c中編譯。 –

回答

1

它將創建一個指向int指針的數組H.n。指向第一個數組元素的指針將被存儲在H.L中。

如果你想要一個int的數組,刪除星號。

在附註中,您可能更樂意使用vector<int*>來代替。

使用起來更容易。

0

在表達式語句

H.L = new int* [H.n]; 

有創建使用一元運算符new []int *[H.n]類型的數組的右側。這是陣列的每個元素都有類型int *

用於方括號中的表達式H.n指定分配數組的元素數量,並且必須轉換爲size_t類型。通常它是一些整數類型,例如int

按照C +標準(5.3.4新)

  1. ...如果它是一個數組,新表達式返回指向數組的初始 元件。

所以左側的左值H.L應具有類型int **或某些類型的(通常在罕見的情況下),可以從int **被轉換。