c++指针数组的语法

Syntax of arrays of pointers in c++

本文关键字:语法 数组 指针 c++      更新时间:2023-10-16

我是c++编程新手,试图理解这种语法

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

我对这部分new int *[5]感到困惑;它是指指向5个子指针的整型指针吗?

当你逐条阅读时,你就会清楚了:

new        int *             [5]
^^^        ^^^^^             ^^^
give me    pointers to int   and five of those.

然后保护arr中第一个新指针的地址,从而得到一个由五个指针动态分配的数组。

请注意,"在现实世界中"(即,如果没有老师/教授禁止你这样做),你将使用std::vector而不是new[]

你在声明一个指向整型的指针数组。
数组容量为5个(指针)。
由于new的原因,该变量被分配在动态内存中。

当你遇到不重要的类型问题时,使用typedef(至少在你的头脑中):

typedef int* int_ptr;
int_ptr *arr;
arr = new int_ptr[5];

现在更容易理解了,不是吗?