C указатель на функцию с приведением - PullRequest
0 голосов
/ 03 мая 2020

У меня есть функция this, которой нужен двумерный целочисленный массив:

void Add_Binary_To_Matrix(int (*qrMatrix)[21], int *binPtr,
        int x, int y, int count, int skipper, int direction)

И этот массив представляет собой массив одномерных указателей, но я добавляю память в каждую строку (что также делает его двумерным целочисленный массив, верно?):

int *qrCopy[currentVersion->height];
for (int i = 0; i < currentVersion->height; i++) 
    qrCopy[i] = malloc(currentVersion->height * sizeof(int));

Итак, я попытался передать его множеством способов, но ни один из них не сработал:

Add_Binary_To_Matrix((int *)qrCopy, binPtr, 20, 20, 0, 0, 1);
Add_Binary_To_Matrix(qrCopy, binPtr, 20, 20, 0, 0, 1);
Add_Binary_To_Matrix(&((int *)qrCopy[0]), binPtr, 20, 20, 0, 0, 1);

, но передать его так не кажется чтобы работать, поэтому мой вопрос, как я могу передать этот массив в функцию?

1 Ответ

1 голос
/ 03 мая 2020

Невозможно передать массив в функцию.

Тип int (*qrMatrix)[21] - указатель на "21-элементный массив целых чисел".

qrCopy - это массив указателей, поэтому его нельзя передать.

Как установить аргумент: создать массив и получить указатель на него.

int array[21];
Add_Binary_To_Matrix(&array, binPtr, 20, 20, 0, 0, 1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...