我目前正在研究使用深度優先搜索訪問數組元素的代碼。如果我遇到'Y',我用'*'替換它並增加我的計數。不過,雖然使用指針,我遇到了以下錯誤:使用指針訪問函數中的二維數組
In function 'dfs':
5:5: error: invalid type argument of unary '*' (have 'int')
In function 'checkMe':
23:16: error: invalid type argument of unary '*' (have 'int')
這裏是我的代碼:
#include <stdio.h>
void dfs(char* m,int r,int c,int v1,int v2)
{
*(*(m+r)+c) = '*';
for(int k=0;k<2;k++)
{
if((r<(v1-1))&&(c<(v2-1)))
{
dfs(m,r,c,v1,v2);
}
}
}
int checkMe(char* m,int row,int col)
{
int counter = 0,i=0,j=0;
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
if(*(*(m+i)+j) == 'Y')
{
dfs(m,i,j,row,col);
counter++;
}
}
}
return counter;
}
int main()
{
int i = 0,count = 0,p = 4,q = 4;
char input[4][4]={{'Y','Y','Y','N'},{'N','N','N','Y'},{'Y','Y','N','Y'},{'Y','N','N','N'}};
count = checkMe(input,p,q);
printf("%d",count);
return 0;
}
誰能幫助我?
你錯誤地定義了函數的參數。例如,而不是char * m funsction checkMe應該有參數類型char m [] [4]或char(* m)[4] –