Матрица типа int, использующая данные uint8_t, печатает неверно при передаче в функцию - PullRequest
0 голосов
/ 09 июня 2019

Хорошо, поэтому я получил следующий указатель sh и массив матриц теней.

 uint8_t * sh;
 int shadows[k][330][210];

Я заполняю тени следующим образом:

int rows = 165;
int cols - 105;
for(int i = 0; i < rows; i++){
        for(int j = 0; j < cols; j++){              
            shadows[reached][i][j] = sh[index];
            index++;
        }
}

Затем я могу напечатать, например, тени [0], например:

int i;
int j;
for (i=0; i<rows; i++){
        for(j=0; j<cols; j++){
            printf("%d  ", shadows[0][i][j]);
        }
        printf("\n");
}

Все нормально, такдалеко.Печать теней [0] выглядит хорошо.Затем я передаю эту матрицу функции, подобной этой:

separateMatrixByColumn(1, cols-1, rows, cols, shadows[0], v[0], g[0]);

Внутри этих функций первое, что я делаю, это печатаю тени матрицы:

void separateMatrixByColumn (size_t wanted_cols1, size_t wanted_cols2, size_t rows, size_t columns, int m[rows][columns], int answer1[rows][wanted_cols1], int answer2[rows][wanted_cols2]){

    // this print looks bad. It adds several 0s to the matrix!
    int k;
    int l;
    for (k=0; k<rows; k++){
            for(l=0; l<columns; l++){
                printf("%d  ", m[k][l]);
            }
            printf("\n");
    }

   ...

}

Получаем отпечаток внутримоя функция выглядит плохо.Он показывает несколько нулей внутри моей матрицы.Почему это происходит?

1 Ответ

0 голосов
/ 09 июня 2019

В итоге я использовал дополнительную amtrix

  int aux[rows][cols];
    for (i=0; i<rows; i++){
            for(j=0; j<cols; j++){
                aux[i][j] = shadows[0][i][j];
            }
    }
    separateMatrixByColumn(1, cols-1, rows, cols, aux, v[0], g[0]);
...