2016-02-13 86 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 **被转换。