首页 > 代码库 > 一个关于结构未解决的困惑

一个关于结构未解决的困惑

一、问题描述:结构别名问题,一个是BiTree, 一个是*bi。
                        第一个别名在主函数体外可以用,内部不能用;第二个都可以用。
                        如果不写第二个别名,第一个在主函数体内外都可以用。
 
二、问题代码
 1 #include<stdio.h> 2  3 typedef struct BiTree{ 4      char data; 5      struct BiTree *lchild; 6      struct BiTree *rchild; 7     }BiTree,*bi; 8  9 typedef struct AssistNode{10      BiTree *e; // 这里这样是没有问题的11      int isFirst;12 }AssistNode,*assist;13 14 void main(){15      //这样是没问题的16      assist a1;17      a1= (assist*)malloc(sizeof(assist));18  19      /*这里就不行了,只能使用第二种写法,写作AssistNode和BiTree都报用作表达式非法20      AssistNode *a2;21      a2= (AssistNode*)malloc(sizeof(AssistNode));*/22 23      a1->isFirst= 0;24      printf("%d", a1->isFirst);25      getchar();26 }

 

三、可能原因

      别名或许有作用域?

一个关于结构未解决的困惑