c++ - 使用指针初始化多维数组

标签 c++ pointers multidimensional-array

我想要一个像下面这样在 cpp 中初始化动态二维数组的函数

void initArrays(int n,double **a,double **b,double **c) {
a = new double*[n];
for (int i = 0; i < n; i++)
    a[i] = new double[n];
b = new double*[n];
for (int i = 0; i < n; i++)
    b[i] = new double[n];
c = new double*[n];
for (int i = 0; i < n; i++)
    c[i] = new double[n];
}

函数调用完成,但它没有初始化我作为函数参数给出的指针。 例如,如果我在 main 中调用这个函数

double **x,**y,**z;
initArrays(3,x,y,z);

我无法访问

x[0][0]

我做错了什么?

最佳答案

指针保持未初始化状态,因为您从未给它们赋值。 init 函数中的指针是您传递的指针的拷贝。您可以通过引用传递指针:

void initArrays(int n,double **&a,double **&b,double **&c)

也就是说,使用 std::vector 可能会更好。

关于c++ - 使用指针初始化多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25913813/

相关文章:

c++ - 使用 boost::regex 从目录中获取带有某些正则表达式的文件名时出现意外输出

c++ - 指针和构造函数的问题

c++ - 如何初始化作为构造函数中的类成员的共享指针

c++ - 为什么 vector 的随机访问迭代器与指针不同,给出相同的内存地址?

c - C中的指针与递归

c++ - 保留插入顺序的 C++ HashMap

c++ - 如何配置 VS Code 使其在程序运行后不会关闭控制台

javascript - 无法使用 setInterval 将多维数组中的数组传递给其他函数

c++ - 如何获取二维原生数组的迭代器

java - 初学者二维数组越界异常