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时这是什么意思?
答案 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)
相同,因此两个代码段的含义相同。