开始在做力扣题目时候,偶尔会因为二维数组传参而搞得晕头转向,现在梳理内容如下,掌握之后就不在头疼啦。
1.使用calloc(或malloc)申请二维指针,调用时直接传指针。
声明调用函数:
void dfs(int len, int index, int **res, int *resCnt)
相关代码片段:
int **res = (int **)calloc(size, sizeof(int *));
for (int i = 0; i < size; i++) {
res[i] = (int *)calloc(numsSize, sizeof(int));
}
调用时,直接传res即可:
dfs(x, x, res, x);
2.如果res不是通过calloc申请,而是直接定义的
例如:int res[m][n]
这时候,正确的dfs中res的声明格式为:int res[][len],第一维可以省略也可以不省。
void dfs(int len, int index, int res[][len], int *resCnt)
相关代码片段:
int res[size][numsSize];
for (int i = 0; i < size; i++) {
memset(res[i], 0, sizeof(int) * numsSize);
}
调用时:
dfs(x, x, &res, x);
3.同上一种方式,只不过声明格式不同
还可以这么写:int (*res)[len]
void dfs(int len, int index, int (*res)[len], int *resCnt)
网友评论