定义结构体数据类型及变量的几种方式
//此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c //同时又声明了结构体变量s1 //这个结构体并没有标明其标签 struct { int a; char b; double c; } s1; //此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c //结构体的标签被命名为SIMPLE,没有声明变量 struct SIMPLE { int a; char b; double c; }; //用SIMPLE标签的结构体,另外声明了变量t1、t2、t3 struct SIMPLE t1, t2[20], *t3; //也可以用typedef创建新类型 typedef struct { int a; char b; double c; } Simple2; //现在可以用Simple2作为类型声明新的结构体变量 Simple2 u1, u2[20], *u3;
而以下这种方式也时常见到
typedef struct QNode { QElemType data; //数据域 struct QNode *next; //指针域 }QNode,*QueuePtr;
这段代码可以通过以下这个例子来理解
typedef struct int ElemType //定义了一个int类型的变量ElemType typedef struct int* ElemTypePtr //定义了一个int*类型的变量ElemTypePtr
则该结构体定义可以理解为
typedef struct QNode QNode //QNode 的对象都是结构体 typedef struct QNode* QueuePtr //QueuePtr 的对象都是结构体指针