-7

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];
}
4

2 回答 2

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;

我不确定您在显示的代码中到底想做什么,但肯定有更好的方法。如果您描述了您想要实现的目标,我们可以为您提供更多帮助。

于 2013-08-01T07:03:23.123 回答
0

我已经包含了一个代码示例,说明如何使用动态二维数组分配、使用和取消分配静态数组。

我希望它是有用的。

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;
    }
}
于 2013-08-01T06:57:44.170 回答