一、问题描述:结构别名问题,一个是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 }
三、可能原因
别名或许有作用域?
时间: 2024-12-25 06:42:40