员理管帅最 发表于 2019-9-24 11:15:09

为什么会这样,求大神指点,是我编译器问题吗

#include<stdio.h>
#include<stdlib.h>

typedef struct erch
{
   char c;
   int rflat;
   int lflat;
    struct erch *zou,*you;
}*A,*AA,**AAA;
int creation(AAA x)
{
   char b;
   scanf("%c",&b);
   if(b==' ')
    {
    *x=NULL;
    }
    else
    {printf("标志1");
      *x=(AA)malloc(sizeof(A));
      (*x)->c=b;
(*x)->rflat=0;//为什么这里会出错
(*x)->lflat=0;//不明白,为什么没有这两句程序就能正常退出。
      creation(&(*x)->zou);
      creation(&(*x)->you);
   }   
}
int main()
{
AA fp;
creation(&fp);
printf("标志");

return 0;
}

jackz007 发表于 2019-9-24 13:42:59

#include<stdio.h>
#include<stdlib.h>

typedef struct erch
{
   char c                  ;
   int rflat               ;
   int lflat               ;
   struct erch * zou , * you ;
} A                        ;

void creation(A ** x)
{
         char b                              ;
         * x = NULL                            ;
         scanf("%c" , & b)                     ;
         if(b != ' ') {
               printf("标志1\n")             ;
               * x = (A *) malloc(sizeof(A)) ;
               (* x) -> c = b                ;
               (* x) -> rflat = 0            ;
               (* x) -> lflat = 0            ;
               (* x) -> zou = NULL         ;
               (* x) -> you = NULL         ;
         }
}

int main(void)
{
      A * fp                                             ;
      creation(& fp)                                     ;
      if(fp) {
                printf("标志\n")                           ;
                printf("fp -> c   = %c\n" , fp -> c)   ;
                printf("fp -> rflat = %d\n" , fp -> rflat) ;
                printf("fp -> lflat = %d\n" , fp -> lflat) ;
      }
}

员理管帅最 发表于 2019-9-24 14:50:27

jackz007 发表于 2019-9-24 13:42


谢谢大哥,虽然不是我想要的答案,但很感谢你,,,,,,问题原来出现在typedef那里的*A应改为A。
页: [1]
查看完整版本: 为什么会这样,求大神指点,是我编译器问题吗