在这行代码中如何分配内存“ int ** v = new int * [n]; ”?

问题描述 投票:1回答:2
 int **v = new int*[n];

我对这是什么感到困惑?有人可以解释吗?

c++ arrays pointers memory-management syntax
2个回答
2
投票

这将n指针数组分配给int。指向此指针数组中第一个元素的指针存储在v中。它是一个双指针,因此通过v[i]访问元素将返回数组中存储的指针。


1
投票

在内存中动态分配整数数组的数组

int **v = new int*[n];

静态等效

size_t n=5;
int *v[n] = {} 
// or  
int v[n][] ={ {1,2,3,4}, {5,6,7,8}, {9,8,7}, {6,5,4}, {3,2,1} }; //2 dimensional array

因为最大子尺寸大小会自动推断为4,但我想恕我直言,这还没有给出,

int ** v =新的int * [n];

所以我想应该这样指定>]

int **v = new int*[n*4];
© www.soinside.com 2019 - 2024. All rights reserved.