Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何将二维矩阵作为参数传递给函数?_C - Fatal编程技术网

C 如何将二维矩阵作为参数传递给函数?

C 如何将二维矩阵作为参数传递给函数?,c,C,对于C语言,我们必须实现一个定义如下的函数 int numIslands(char** grid, int gridRowSize, int *gridColSizes); I无法更改此函数的定义 我已将其作为 #定义访问的“v” 无效dfs(字符**网格,整数gridRowSize, 整数网格大小,整数i,整数j){ 网格[i][j]=已访问;=0&&grid[i-1][j]=='1')=0&&grid[i][j-1]=='1') dfs(grid,gridRowSize,gridcolsi

对于C语言,我们必须实现一个定义如下的函数

int numIslands(char** grid, int gridRowSize, int *gridColSizes);
I无法更改此函数的定义

我已将其作为

#定义访问的“v”
无效dfs(字符**网格,整数gridRowSize,
整数网格大小,整数i,整数j){
网格[i][j]=已访问;=0&&grid[i-1][j]=='1')=0&&grid[i][j-1]=='1')
dfs(grid,gridRowSize,gridcolsize,i,j-1);
如果(j+1
它进行编译,但抛出对网格具有索引访问权限的行(如代码中提到的行)。

您可以执行以下操作:

char line1[] = {'1', '1', '1', '1', '0'};
char line2[] = {'1', '1', '0', '1', '0'};
char line3[] = {'1', '1', '0', '0', '0'};
char line4[] = {'0', '0', '0', '0', '0'};
int sizes[] = {
    sizeof(line1) / sizeof(*line1),
    sizeof(line2) / sizeof(*line2),
    sizeof(line3) / sizeof(*line3),
    sizeof(line4) / sizeof(*line4)
};
char* grid[] = {line1, line2, line3, line4};
int gridRowSize = sizeof(grid) / sizeof(*grid);

int res = numIslands(grid, gridRowSize, lines);

char**grid={…}的初始值设定项不应编译。当你说“这不起作用”时,它以什么方式不起作用?请提供MCVE()。当你不显示你在做什么时,很难知道你做错了什么。请,请,请的可能重复,指针是指针,数组是数组。每个人都有自己的人生目标<代码>int numIslands(ptrdiff_t gridRowSize、ptrdiff_t gridColSize、char grid[gridRowSize][gridColSize])
可能是您想要的,并且您将矩阵创建为
char[][]={…}(您可能需要提供最后一个维度,我不确定)。对函数的调用是相同的。您的错误(您没有告诉)可能是segfault,可能是因为您正在写入可能是常量变量的内容。是的,这是有效的。但还有更优雅的解决方案吗?也许像我的代码中那样使用简单的单行初始值设定项?@therhino不使用需要
char**
的函数。您需要有一个指向包含数据的其他数组的指针数组。请,请,请。指针是指针;数组是数组。数组由[]访问。计算数组成员数的唯一合理方法是
#定义数组大小(arr)(sizeof(arr)/sizeof((arr)[0])
。然后像这样使用:
int SIZE[]={ARRAY_SIZE(line1),ARRAY_SIZE(line2),…}@CacahueteFrito你不能取悦所有人。但是每个人都不能取悦我。