取消引用符号对指针数组的作用是什么

时间:2016-04-18 07:43:34

标签: c++ arrays pointers multidimensional-array dynamic

int cols = 2;

    int *p[2];

    *p = new int[cols];

    *(p+1) = new int[cols];

我有这个非常简单的代码但是我不明白为什么*p = new int[cols];通常在声明1d数组时只需要p=new int[cols];But in a 2d array you need the * what is it doing??当我cout<< *p我得到cccccc时这是什么意思?

1 个答案:

答案 0 :(得分:1)

代码编写得非常糟糕。当你这样写时可能会更清楚:

using Thing = int *;

Thing make_thing(int n) {  return new int[n]; }

// ...

Thing p[2];
p[0] = make_thing(cols);
p[1] = make_thing(cols);

有一个通用的语言规则,即A[B]*(A + B)相同,因此两个代码段的含义相同。