当指针指向动态分配的内存时,指针指向指针的指针被赋什么值?
What value does a pointer to pointer get assigned when points to a dynamically allocated memory?
考虑以下情况:
int **my_array = new int*[10];
- 我们给my_array赋了什么值?
-
my_array
是指向什么的指针? - 是否有任何方法通过my_array(指针)迭代并建立一个二维整数数组(而不是int*)?
将数组的地址赋值给my_array
。数组中包含可以指向其他数组的指针,但还没有。
是的,我们可以这样做:
int **my_array = new int*[10];
for(int i=0; i<10; ++i)
my_array[i] = new int[13];
my_array[2][11] = 500;
我们在这里给
my_array
赋什么值?
您可以将int*
分配给my_array
的元素。例如
my_array[0] = new int[20];
或
int i;
my_array[0] = &i;
my_array
是一个指向什么的指针?
指向一个包含10个int*
对象的数组。
是否有任何方法通过
my_array
(指针)迭代并建立一个二维整数数组(而不是int*)?
不知道你想在这里看到什么。my_array
的元素只能是int*
。
如果你想让my_array
是一个指向2D数组的指针,你可以使用:
int (*my_array)[20] = new int[10][20];
现在您可以使用my_array[0][0]
到my_array[9][19]
。
PS如果这是你理解指针和数组的尝试,这是很好的。如果您试图在工作程序中部署此代码,则不要再使用原始数组。使用std::vector
或std::array
对于1D数组,使用:
// A 1D array with 10 elements.
std::vector<int> arr1(10);
对于2D数组,使用:
// A 2D array with 10x20 elements.
std::vector<std::vector<int>> arr2(10, std::vector<int>(20));
相关文章:
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 初始化或分配空字符串文字到指向 C 中的 char 的指针或指向 C++ 中 const char 的指针的原因是什么
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 使用基类指针调用基类的值构造函数的语法是什么?
- 将指针分配给另一个指针时会发生什么情况?
- 当该数组的索引中没有元素时,指针指向什么?
- C++:Lambda 函数指针转换的用例是什么?
- C++关于指针和使用函数将它们启动到堆的行为究竟是什么?
- 这个失败的测试是将零添加到空指针未定义的行为、编译器错误还是其他什么?
- 使用共享指针时,从共享指针本身释放内存的机制是什么
- 空指针常量 (nullptr)、空指针值和空成员指针值之间有什么区别?
- 什么更好?返回对象指针列表?或返回指向对象列表的指针?
- 什么是更好的做法?通过指针或标识符传递类成员?
- 如果我在 const 函数上使用指针,我可以返回什么?
- 为什么此指针值不能转换为整数的规则是什么?
- 在自定义 std::vector-like 容器中处理指针和非指针模板类型的最佳方法是什么?
- 在什么情况下,需要共享智能指针而无法使用唯一指针?
- 以下与指针相关的代码的输出是什么?
- 指向数组基址的指针而不是指向第一个元素的指针有什么优点?
- C++中的指针.什么类型的对象