我的程序中有这样的矩阵:
double m[3][4] =
{
{2, 4, 5, 7},
{4, 5, 1, 12},
{9, 12, 13, -4}
};
我想将其转换为 double**
类型。
我已经尝试过简单的 double** a = (double**)m;
,但它不起作用(当我尝试读取任何值时,我得到“访问违规读取位置 0x00000000。”,这意味着我正在尝试从 NULL
地址读取。
我找到了几乎可行的解决方案:
double *b = &m[0][0];
double **c = &b;
它在我读取字段 c[0][any]
时有效
但是,当我尝试从字段 c[1][0]
中读取值时,会出现同样的 NULL 地址读取问题。
将我的 double m[3][4]
数组转换为类型 double**
的正确方法是什么?
编辑: 你说那不可能。所以我会稍微改变一个问题。如何将二维 double 组作为参数传递给函数?我的函数有原型(prototype):
void calculate(double **matrix, int n); //where matrix size is always n by n+1
而且它可以很好地处理动态分配的数组。我怀疑让它工作的唯一方法是分配新的动态数组并逐个元素复制原始静态数组...
最佳答案
你不能。
符号 double**
指的是指针数组。您没有指针数组,而是 double 组。
关于C++ 将静态二维 double 组转换为 double **,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15766382/