【问题标题】:Dynamically allocating an array of pointers动态分配指针数组
【发布时间】:2020-06-27 17:56:02
【问题描述】:

最后一行代码如何动态分配指针数组?

int size;

    cin >> size;

    int** arr = new int* [size];

我对代码的“int**”部分最不清楚。有人可以分解一下吗?

谢谢!

【问题讨论】:

  • int* arr = new int[size] 分配ints 数组的方式相同。只是你有int*,而不是int

标签: c++ pointers dynamic-memory-allocation


【解决方案1】:
int   a; // a is an int
int  *a; // a is a pointer to an int
int **a; // a is a pointer to a pointer to an int 

您可以将int* 指向int 的数组,如下所示:

int *a = new int[42];  // allocates memory for 42 ints

完全一样,你可以让int**指向int*的数组,像这样:

int **a = new int* [42];  // allocates memory for 42 int*

请注意,该数组中的每个指针都需要分配自己的内存,否则您只有一个由 42 个指针组成的数组,其中没有一个指向有效内存。

【讨论】:

  • 我明白了……所以,“int** a;”是指向“int 指针”的指针,其中该指针 (int** a) 用于为原始“int* a”动态分配内存,这就是 'new int* [size] 部分代码呢?我理解正确吗?
  • 是的,我想你已经明白了。不过,我很乐意澄清您是否需要。
  • @AKidNamedCoder 没问题。如果回答您的问题,请考虑 accepting 的答案。
【解决方案2】:

它是一个双指针 int 变量。正如我从代码中看到的那样。它存储指针 int* 的地址

【讨论】:

    【解决方案3】:

    创建动态数组 语法是: data_type * name_of_array = 新的 data_type [大小] 您可以根据需要将大小设置为变量或值。

    【讨论】:

    • 是的,我在提到基本数据类型时理解这一点,但我特意问的是它如何用于指针数组。
    【解决方案4】:

    这样想:

    要分配一个数组,你可以使用 类型 *_var = 新类型[大小]

    但是你希望你的类型是指向 int 的指针,所以: int* *arr = new (int*)[size]

    【讨论】:

    • 错字:type vs _type
    猜你喜欢
    • 1970-01-01
    • 2012-09-16
    • 2013-05-26
    • 2020-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多