使用分离功能打印动态二维矩阵

时间:2016-12-25 19:46:45

标签: c matrix printf

我无法理解发生了什么。我在这篇文章之后创建了一个矩阵:Function to dynamically allocate matrix

要打印矩阵,我创建了这个函数:

void PrintMatrix(uint8_t *matrix, size_t nrows, size_t ncols)
{

    // Prints matrix

    size_t i, j;

    printf("\n");

    for (i = 0; i < nrows; ++i) 
    {
            for (j = 0; j < ncols ; ++j) 
            {
            printf("%" PRIu8 "\t", matrix[i][j]);
            }

    printf("\n");
    }

    printf("\n");
}

此函数导致编译错误:

error: subscripted value is neither array nor pointer nor vector
      printf("%" PRIu8 "\t", matrix[i][j]);

为了检查这个功能,我复制了main()中的代码并运行它,令人惊讶的是没有任何问题,那么,为什么它作为一个独立的函数运行时不起作用?

1 个答案:

答案 0 :(得分:1)

uint8_t *的类型为uint8_t (*)[ncols]。如果要将数组传递给函数调用(它将转换为指向数组的指针),它应该是void PrintMatrix(uint8_t *matrix, size_t nrows, size_t ncols) 类型。

更改

void PrintMatrix(size_t nrows, size_t ncols, unit8_t (*matrix)[ncols])

require 'pg'
conn = PG.connect(dbname: 'postgres://uullzzubseknqp:fe8af8be794708c6559d1b521aa285a9500c8645d543fdf23f83bbe7dd628462@ec2-54-235-204-221.compute-1.amazonaws.com:5432/d80u9t8om01fml')