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
的也应该避免。除非必要,否则避免动态分配对象。遵循这些准则将使代码更安全、更易于维护。
下面是如何制作一个整数向量、一个指向该向量的指针和一个指向该指针的指针。
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;
我不确定您在显示的代码中到底想做什么,但肯定有更好的方法。如果您描述了您想要实现的目标,我们可以为您提供更多帮助。
我已经包含了一个代码示例,说明如何使用动态二维数组分配、使用和取消分配静态数组。
我希望它是有用的。
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;
}
}