为什么会这样,求大神指点,是我编译器问题吗
#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;
} #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) ;
}
} jackz007 发表于 2019-9-24 13:42
谢谢大哥,虽然不是我想要的答案,但很感谢你,,,,,,问题原来出现在typedef那里的*A应改为A。
页:
[1]