C:将2d数组移交给双指针

时间:2018-06-07 23:23:23

标签: c arrays pointers memory-management

我试图交出" test_array"到双指针" **值"这是" Matrix"的成员结构

我想避免使用" malloc"因为我想将代码用于嵌入式系统应用程序。有不同大小的矩阵,我只想使用一个结构。这背后的想法是指向一个静态的2d数组,以便没有内存冲突。

#include <stdio.h>

struct Matrix {
    int rows;
    int columns;
    double **values;
};

static double test_array[2][3] = {{1,2,3},{4,5,6}};

int main (void)
{

    struct Matrix matrix;
    int i,j;

    matrix.rows = 2;
    matrix.columns = 3;
    matrix.values = test_array;

    for (i=0; i<matrix.rows; i++) {

        for (j=0; j<matrix.columns; j++) {
            printf("%f ", *(*(matrix.values + i) + j));
        }

        printf("\n");
    }

}

指向一维阵列并不是什么大问题,但它如何适用于二维阵列?

1 个答案:

答案 0 :(得分:0)

您可以改为以这种方式定义结构 -

struct Matrix {
    int rows;
    int columns;
    double (*values)[];
};

并将其直接指向2D数组,下面的语句应该有效 -

matrix.values = test_array;