C: передать 2d массив двойному указателю - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь передать "test_array" двойному указателю "** values", который является членом структуры "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-й массив не имеет большого значения, но как оно работает для-d массив?

1 Ответ

0 голосов
/ 08 июня 2018

Вместо этого вы можете определить свою структуру следующим образом -

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

и указать ее непосредственно на 2D-массив, ниже должно работать выражение -

matrix.values = test_array;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...