讨论/技术交流/c的一个编译warning/
c的一个编译warning

//今天在做题时候,发现了一个编译的warning,没有找出哪有问题 ,希望大佬帮忙指出一下啊;

Line 22: Char 33: warning: passing argument 2 of ‘dfs’ from incompatible pointer type [-Wincompatible-pointer-types]
dfs(root->left , &len ,str);
^~~~

代码块  
void dfs(struct TreeNode *root , int  *len ,  char *str)
{
      char left='('  ;
      char right=')' ;
      if(root==NULL)
      return ;
     // 判断 
     if(root->left!=NULL && root->right!=NULL)
     {
                     str[*len++]=root->val;
               //左括号; 
               str[*len++]=left;
               dfs(root->left , &len ,str);
               str[*len++]=right;
               // 右括号
               str[*len++]=left;
// line 22; 
               dfs(root->right ,&len ,str);
               str[*len++]=right;

     }
     else if(root->left!=NULL && root->right==NULL)
     {
                str[*len++]=root->val;
               //左括号; 
               str[*len++]=left;
               dfs(root->left , &len ,str);
               str[*len++]=right;
               // 右括号
               str[*len++]=left;
               str[*len++]=right;
     }
     else if(root->left==NULL && root->right!=NUL)
     {

             str[*len++]=root->val;
               // 左括号
               str[*len++]=left;
               str[*len++]=right;
                 // 右括号
               str[*len++]=left; 
               dfs(root->right ,&len ,str);   
               str[*len++]=right;
     }


}

#define MAX 10000;
char * tree2str(struct TreeNode* t){
    char *str;
    str=(char *)malloc(sizeof(char)*MAX);
    if(root==NULL)
    return NULL;
    int len=0;
  dfs(t,&len,str);

   *(str+*len)='\0';
   return str;

}

入参len是int *,你那行代码对len又做了个取地址,就变成了int **了,所以报错

1
展开全部 2 讨论