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]=