C++ 这行代码中的内存是如何分配的;整数**v=新整数*[n]&引用;?

C++ 这行代码中的内存是如何分配的;整数**v=新整数*[n]&引用;?,c++,arrays,pointers,memory-management,syntax,C++,Arrays,Pointers,Memory Management,Syntax,我不明白这是怎么回事?有人能解释一下吗?这将n指针数组分配给int。指向此指针数组中第一个元素的指针存储在v中。它是一个双指针,通过v[i]访问元素时会从数组返回一个存储的指针。这将n指针数组分配给int。指向此指针数组中第一个元素的指针存储在v中。它是一个双指针,因此通过v[i]访问元素会从数组返回一个存储的指针。它没有正确完成: int **v = new int*[n]; 我们认为这意味着在内存上动态分配整数数组的数组,所以维度必须适合它 静态等效 int **v = new int*

我不明白这是怎么回事?有人能解释一下吗?

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

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

它没有正确完成:

 int **v = new int*[n];
我们认为这意味着在内存上动态分配整数数组的数组,所以维度必须适合它

静态等效

int **v = new int*[n];
//或 int v[][n]={{1,2,3,4,5},{6,7,8},{9,8,7,6,5}//二维阵列

因为第一个维度的最大大小自动推断为3,但
我想我还没给你这个

整数**v=新整数*[n]

所以它被指定为

const size_t n=5;
int *v[n] = {} ;

它没有正确完成:

 int **v = new int*[n];
我们认为这意味着在内存上动态分配整数数组的数组,所以维度必须适合它

静态等效

int **v = new int*[n];
//或 int v[][n]={{1,2,3,4,5},{6,7,8},{9,8,7,6,5}//二维阵列

因为第一个维度的最大大小自动推断为3,但
我想我还没给你这个

整数**v=新整数*[n]

所以它被指定为

const size_t n=5;
int *v[n] = {} ;

你知道这是怎么回事吗:
int*v=newint[n]?如果您这样做,那么您对问题中的行有什么问题?首选,例如
std::array
std::vector
。你知道这是什么吗:
int*v=newint[n]?如果您这样做,那么您对问题中的行有什么问题?首选,例如
std::array
std::vector
。另请阅读您可能还想提及数组中的
n
指针未初始化。这意味着即使访问它们的值也会产生未定义的行为。要使用它们(例如,甚至将指针与其他指针进行比较,更不用说像它们指向数组的第一个元素那样取消对指针的引用),需要对它们进行适当的初始化对于
i
,这是必须使用上述数据结构的。最好使用
size\u t
而不是
int
。您可能还想提到数组中的
n
指针未初始化。这意味着即使访问它们的值也会产生未定义的行为。要使用它们(例如,甚至将指针与其他指针进行比较,更不用说像它们指向数组的第一个元素那样取消对指针的引用),需要对它们进行适当的初始化这是必须使用上述数据结构的。对于
i
,最好使用
size\u t
而不是
int
。您的意思是
int v[][n]=
您的意思是
int v[][n]=