双指针2-d数组声明int ** seq = new int * [n];

时间:2016-10-08 03:53:32

标签: c++ pointers

int n,q;
cin>>n>>q;
int** seq=new int* [n];          // what is the meaning of this ?

我一直试图理解这个阵列声明半小时但是 int * [n]让我很困惑。 是否有更方便的方式来编写此声明? 我怎样才能在cpp中有这种类型的声明?

2 个答案:

答案 0 :(得分:0)

  

是否有更方便的方式来编写此声明?

在c ++中声明指针数组的惯用方法是

int n,q;
cin>>n>>q;
std::vector<int*> seq(n);  

虽然有必要将int*指针存储在数组中,这是值得怀疑的。

答案 1 :(得分:-2)

int *是一个指针(我假设你知道那些)。
因此int * [n]是一个长度为 n 的数组,其中包含整数的指针 最让人困惑的是,包含数组的变量实际上是C ++中的指针。因此,变量的类型,我们将int * [n]存储为,必须是int **。
指针指向数组的第一个元素,例如seq [2]将编译成*(seq + 2)。数组不是对象,而是计算机在运行时不知道的内存构造。