
1.struct 结构体名{
//成员表列
};
2.struct{
//成员表列
}变量名;
结构体变量要和结构体同时定义。
3.struct结构体名{
//成员表列
}变量名;
结构体变量与结构体同时定义。
4.typedef struct 结构体名 {
//成员表列
};
此时结构体没有别名,定义变量形式为 struct 结构体名 变量名。
5.typedef struct 结构体名 {
//成员表列
}别名;
定义结构体变量可以用别名直接定义,也可以按照方式4。
6.typedef struct{
//成员表列
}别名;
直接用别名定义结构体变量。
例:本章经常使用
typedef struct 结构名
{
类型 变量名;
类型 变量名;
(即成员列表)
} 结构别名1, 结构别名2;
结构体名称与结构体变量的区别:
//声明结构体类型,这里的students就是结构体名称
struct students{
char name[20];
int age;
};
//定义结构体变量,stu1,stu2是结构体变量。
struct students stu1,stu2;
也可以:
//声明结构体类型,结构体名为students,也可以不指定结构体名
struct students{
char name[20];
int age;
}stu1,stu2;//同时定义变量
初始化结构体变量
以上面的例子为例
方法 1 整体初始化:struct students stu1={“Allen”,18};
方法 2 各成员变量分别初始化:
strcpy(stu1.name,“Allen”);
stuN.age=18;
//但此时不能用 stu1.name=“allen”;
若
struct students{
char *name;//将 name 定义为 char * 类型
int age;
};
则可以使用stu1.name="allen"了;
typedef struct LNode
//定义单链表结点类型,结构体名为LNode
{
ElemType data;//数据域,
struct LNode *next; //指针域
}; LNode,*LinkList;
//LNode:逻辑结点,结点的意思
//linklist:线性表
这里使用了typedef,则可以为LNode结构体创建别名了。
ElemType是element type(“元素的类型”)
因为数据结构是讨论抽象的数据结构和算法的,一种结构中元素的类型不一定是整型、字符型、浮点型或者用户自定义类型,为了不重复说明,使用过程中用“elemtype”代表所有可能的数据类型,简单明了的概括了整体。在算法中,除特别说明外,规定ElemType的默认是int型。
*next指向该结点下一个结点的地址
LNode,*LinkList;
两个都是是struct LNode的别名
展开即:
typedef struct LNode LNode;
typedef struct LNode* LinkList;
*Linklist是当前这个值的地址,只是这个值里有数据data,和下一个值的地址
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)