讨论/综合讨论/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;

}

展开讨论
一码当先发起于 2020-04-30

1、dfs(root–>val, &len, str)这个有错误,第二个参数为len就行。
2、*len++这个用法不能达到目的,的优先级的确比++高,但len++却让地址加1,要让len加1,应该(*len)++。

1
展开全部 2 讨论