Как передать и получить матрицу между функциями в C? - PullRequest
0 голосов
/ 30 апреля 2020

Я определяю матрицу A, и я просто хочу распечатать ее:

#include <stdio.h>

#define N 4

double A[N][N]= {
        {1, 2, 3, 4},
        {5, 6, 7, 8},
        {9, 10, 11, 12},
        {13, 14, 15, 16}
};

void print_matrix(double **A) {
    int i, j;
    for(i = 0; i < N; i++) {
        for(j = 0; j < N; j++) {
            printf("%f ", A[i][j]);
        }
        printf("\n");
    }
}

int main() {
    print_matrix(A);
}

Но при компиляции я получаю ошибку: expected 'double **' but argument is of type 'double (*)[4]'

Я пытался в основная функция для передачи матрицы вроде print_matrix(&A); но тогда ошибка была expected 'double **' but argument is of type 'double (*)[4][4]'

1 Ответ

3 голосов
/ 30 апреля 2020

Pointer-to-pointer не имеет ничего общего с многомерными массивами. Просто объявите функцию как void print_matrix(double A[N][N]).

Благодаря «распаду массива» этот массив передается по ссылке, поскольку double A[N][N], являясь частью списка параметров, неявно «настраивается» на указатель на первый элемент, double (*A)[N].

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