指向指向由n个元素组成的数组的指针的C++指针
C++ pointer to a pointer to an array consisting of n elements
C++如何初始化这个指针:
int (**aLines)[2] ?
我正在尝试初始化:
int (**aLines)[2] = (int(**)[2]) new int*[10];
for(int i = 0; i < 10; i++){
aLines[i] = new int[5][2];
}
在C++中,向量应该是容器的默认选择。裸new
也应该避免。除非必要,否则应避免动态分配对象。遵循这些准则将产生更安全、更易于维护的代码。
以下是如何制作一个int向量,一个指向所述向量的指针,以及一个指向该指针的指针。
std::vector<int> v = {3,8,1,6};
std::vector<int>* p = &v;
std::vector<int>** pp = &p;
std::cout << p->front() << std::endl;
std::cout << (*pp)->back() << std::endl;
我不确定您在显示的代码中到底想做什么,但肯定有更好的方法。如果你描述你正在努力实现的目标,我们可以为你提供更多帮助。
我已经包含了一个代码示例,说明如何用动态2D数组分配、使用和取消分配静态数组。
我希望它有用。
void allocate_print_and_deallocate_numbers() {
// Allocate
int **aLines[2];
for (int i = 0; i < 2; i++) {
aLines[i] = new int* [10];
for (int j = 0; j < 10; j++) {
aLines[i][j] = new int [5];
for (int k = 0; k < 5; k++) {
aLines[i][j][k] = i + j + k; // Assign a number
}
}
}
// Use
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 10; j++) {
for (int k = 0; k < 5; k++) {
std::cout << aLines[i][j][k] << std::endl;
}
std::cout << std::endl;
}
std::cout << std::endl;
}
// Deallocate
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 10; j++) {
delete [] aLines[i][j];
}
delete [] aLines[i];
aLines[i] = NULL;
}
}
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 何时在引用或唯一指针上使用移动语义
- QMetaObject invokeMethod的基于函数指针的语法
- 如何从 std::atomic 中提取指针 T<T>?
- 如何在 C# 中映射双 C 结构指针?
- C++将浮点指针值舍入为小数位数
- 为什么++(*p)更改指针值
- 调整大小后指向元素值的指针unordered_map有效?
- 正在将指针转换为范围
- 使用指向成员的指针将成员函数作为参数传递
- 将OpenCV C++重写为EmguCV C#-如何使用指针
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错