c - 动态二维数组转静态数组

标签 c dynamic static malloc lapack

任何人都知道如何将二维动态数组转换为静态数组,以便我可以在 lapacke 中使用它。 dgels函数在c中只接受静态矩阵? 当我使用 malloc 时,它没有给出正确的答案。我如何使用 malloc 以便它可以与它一起使用。谢谢

#include <stdio.h>
#include <lapacke.h>
#include <conio.h>

int main (int argc, const char * argv[])  
{
    /*double a[5][3] = {1,1,1,2,3,4,3,5,2,4,2,5,5,4,3};*/

    double b[5][2] = {-10,-3,12,14,14,12,16,16,18,16};
    lapack_int info,m,n,lda,ldb,nrhs;
    int i,j;
    double **a;

    a=(double**)malloc(5* sizeof(double*));
    for (i=0;i<5;i++)
    {
        a[i]=(double*)malloc(3* sizeof(double));
    }
    a[0][0]=1; 
    a[0][1]=1;
    a[0][2]=1;
    a[1][0]=2;
    a[1][1]=3;
    a[1][2]=4;
    a[2][0]=3;
    a[2][1]=5;
    a[2][2]=2;
    a[3][0]=4;
    a[3][1]=2;
    a[3][2]=5;
    a[4][0]=5; 
    a[4][1]=4;
    a[4][2]=3;

    m = 5;
    n = 3;
    nrhs = 2;
    lda = 3;
    ldb = 2;

    info = LAPACKE_dgels(LAPACK_ROW_MAJOR,'N',m,n,nrhs,*a,lda,*b,ldb);

    for(i=0;i<n;i++)
    {
        for(j=0;j<nrhs;j++)
        {
            printf("%lf ",b[i][j]);
        }
        printf("\n");
    }
    getch();
    return(info);
}

最佳答案

我不知道lapacke.dgels,但尝试更改:

double **a;
a=(double**)malloc(5* sizeof(double*));
for (i=0;i<5;i++)
{
    a[i]=(double*)malloc(3* sizeof(double));
}

至:

double (*a)[3];
a = malloc(5 * 3 * sizeof(double));

关于c - 动态二维数组转静态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23156401/

相关文章:

Python:在特殊环境中执行代码对象

c - 调试器如何从代码行中查找表达式

php - 在 wordpress 中排队动态 css 不起作用

python - 使用动态创建的函数动态添加属性

c++ - 为什么全局 const char 需要 "static"而 bool 不需要?

c# - 静态类中的静态属性

c# - 防止静态库被初始化

c - Check Sum 函数 C 中的段错误

c - 理解 C 命名空间

javascript - 使用 meteor 将数据传递给动态创建的模板