【c语言】在vscode上本地调试代码的时候,遇到了段错误,检查了下应该没有数组越界的问题,并且这个答案在lc上也可以通过,请大家帮忙看下什么原因,感谢!
以下是代码:
#include"string.h"
#include"stdlib.h"
#include"stdio.h"
void makeAround1To0(char** grid, int x, int y, int gridSize, int gridColSize){
if (y > 0){
if (grid[x][y - 1] == '1'){
grid[x][y - 1] = '0';
makeAround1To0(grid, x, y - 1, gridSize, gridColSize);
}
}
if (y < gridColSize - 1){
if (grid[x][y + 1] == '1'){
grid[x][y + 1] = '0';
makeAround1To0(grid, x, y + 1, gridSize, gridColSize);
}
}
if (x > 0){
if (grid[x - 1][y] == '1'){
grid[x - 1][y] = '0';
makeAround1To0(grid, x - 1, y, gridSize, gridColSize);
}
}
if (x < gridSize - 1){
if (grid[x + 1][y] == '1'){
grid[x + 1][y] = '0';
makeAround1To0(grid, x + 1, y, gridSize, gridColSize);
}
}
return;
}
int numIslands(char** grid, int gridSize, int* gridColSize)
{
int islandCount = 0;
for (int i = 0; i < gridSize; i++){
for (int j = 0; j < gridColSize[i]; j++){
if (grid[i][j] == '1'){
grid[i][j] = '0';
makeAround1To0(grid, i, j, gridSize, gridColSize[i]);
islandCount++;
}
}
}
return islandCount;
}
char *grid[4] = {
"11110",
"11010",
"11000",
"00000"
};
int main(void){
int gridSize = sizeof(grid)/sizeof(grid[0]);
sizeof(grid[0][0]) 将返回 char 类型的大小,通常是1字节。
int gridColumnSize = strlen(grid[0]);
int res = numIslands(grid, gridSize, &gridColumnSize);
printf("%d",res);
}
出现段错误在这里
不确定是不是不可以修改传的参数,也不清楚属于哪里的知识点,请大牛指路
字符串字面量是不能修改的。