c++ - 静态矩阵转换为指针

标签 c++ matrix

我有矩阵 M:

float M[4][3] = {
    0, 0, 0,
    0, 1, 1,
    1, 0, 1,
    1, 1, 0};

我需要转换 M 以使用方法“foo”:

foo(float **matrix){ 
    printf("%f",matrix[0][0]);
}

我使用以下方法成功编译了代码:

foo( (float**) M )

但是当我执行它时,出现了段错误。怎么了?我在 Ubuntu Oneiric 中使用 g++。

提前致谢。


好的,谢谢 Luchian,但是使用怎么样:

float **M = new float*[4];
M[0] = {0,0,0};

我知道它不能编译,但它有类似的东西吗?

最佳答案

如果你想(或需要)自己做算术,请避免强制转换:

void foo(float **pmatrix)
{
    float *matrix = *pmatrix;

    for (int r = 0; r < 4; ++r)
    {
        for (int c = 0; c < 3; ++c)
            printf("%f ", matrix[(r * 3) + c]);
        printf("\n");
    }
}

float M[4][3] = {
    0, 0, 0,
    0, 1, 1,
    1, 0, 1,
    1, 1, 0
};

int main()
{
    float *p = &M[0][0];
    foo(&p);
}

但这段代码很丑陋且容易出错,如果可能的话,请遵循 Luchian 的建议并更正声明。

关于c++ - 静态矩阵转换为指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8827509/

相关文章:

c++ - 在不使用递归的情况下将FFT应用于两个非常大的数的乘法

c++ - 无创多态性

c# - 在 NET Core 中调用从 C++ 项目构建的 .dll 时出现 BadImageFormatException

Android NDK 是 crystaX 获得 wchar 支持的方式吗?

C++ 部分特化不适用于不同大小的特征矩阵

python - 为什么嵌套列表索引与列表推导式交换?

c - 如何还原对角读取的 NxN 矩阵?

algorithm - 使用矩阵找出将 n 写为 1、3 和 4 之和的不同方式的数量?

c++ - 进程退出,返回值 3221226356

c++ - OpenGL:着色器存储缓冲区映射/绑定(bind)