为嵌套数组分配由引用变量指定的内存

Allocating memory specified by a reference variable for nested arrays?

本文关键字:内存 变量 引用 嵌套 数组 分配      更新时间:2023-10-16

我应该实现一个函数

void foo(string** &grid);

我用新分配的数组或字符串数组填充给定引用。

我做过类似

这样的事情
void foo(string** &grid) {
        grid = new string[4][4];
}

但是我得到这个错误:

error: cannot convert 'std::string (*)[4] {aka std::basic_string<char> (*)[4]}' to 'std::string** {aka std::basic_string<char>**} in assignment

嗯。

我知道这个错误试图告诉我什么,但我在这里的根本误解是什么,我该如何去做我想做的事情?

谢谢

new string[4][4]创建了一个指向string[4]的指针,而不是指向string的指针。你能得到的最接近的东西是这样的:

grid = new string*[4];
for (int i = 0; i < 4; i++) {
    grid[i] = new string[4];
}

但是请注意,进程中创建的16个string可能并不都连续存储在内存中。