使用数组分配内存

Memory allocation using array

谁能告诉我,一般来说,下面的 C 语言会做什么?

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

此命令是否在大小为 n 的整数类型的结构 H 中创建 L 变量?

它将创建一个数组 H.n 指向 int 的指针。指向第一个数组元素的指针将存储在 H.L 中。

如果您想要 int 的数组,请删除星号。

附带说明一下,使用 vector<int*> 可能会更快乐。

使用起来更方便。

表达式语句右侧

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

使用一元运算符 new [] 创建了一个 int *[H.n] 类型的数组。也就是说,数组的每个元素都具有类型 int *

方括号中使用的表达式H.n指定分配数组的元素数,必须转换为类型size_t。通常它是一些整数类型,例如 int.

根据C+标准(5.3.4新)

  1. ...If it is an array, the new-expression returns a pointer to the initial element of the array.

所以左边的左值 H.L 应该有类型 int ** 或某种可以从 int **.

转换的类型(通常在极少数情况下)