我在解析这行代码时遇到了困难:
int *a=new int[N];
Run Code Online (Sandbox Code Playgroud)
因此,这声明了一个名为"a"的新整数指针,无论它指向何处,都会存储一个指向大小(int + N)对象的新指针.这是因为
int[N]:=*(int+N)
Run Code Online (Sandbox Code Playgroud)
这个问题是N是类size_t的一个实例,那么添加有什么意义呢?完整代码如下:
int main()
{
const std::size_t N = 100;
int* a = new int[N];
for (std::size_t n = 0; n < N; ++n)
a[n] = n;
delete[] a;
}
Run Code Online (Sandbox Code Playgroud)
你把int[N]它看作是一个数组访问,就像array[5]它一样*(array + 5).那不是它的本质.毕竟,int是一种类型.
new int[N]实际上是一个分配N ints 数组的表达式.它返回一个指向int该数组中第一个的指针,然后指定该数组a.
值得注意的是,像这样的每个表达式都应该与a相关联delete[],它负责在你完成它时解除分配数组(就像每个普通new应该有一个delete).