C++ 将静态二维 double 组转换为 double **

标签 c++ pointers casting double

我的程序中有这样的矩阵:

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/

相关文章:

c++ - 用新类型覆盖基类成员

c - 没有逗号的数组初始化

javascript - 尝试从 MongoDB BsonArray 转换为 IEnumerable<Users> POCO 实例集合时抛出错误

c++ - 在派生类中调用模板基类的cast操作符

c# - 2 个对象,完全相同(命名空间除外)c#

c++ - std::streambuf::sgetc 的范围

c++ - while(getline(myReadFile, temp, ':' )) 执行一次迭代太多导致 vector 越界

c++ - 在 openframeworks 中使用未声明的标识符

arrays - 如何在 Go 中保持强引用?

c++ - 数组作为 const 指针