我无法理解发生了什么。我在这篇文章之后创建了一个矩阵: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()中的代码并运行它,令人惊讶的是没有任何问题,那么,为什么它作为一个独立的函数运行时不起作用?
答案 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')