结构体
结构体
作用:用几个基本数据类型,组合成一个新的数据类型
结构体是一种数据类型,是一种创建变量的模板,编译器不会为它分配内存空间,就像 int、float、char 这些关键字本身不占用内存一样;结构体变量才包含实实在在的数据,才需要内存来存储。
- 定义新的数据类型(结构体):
//常用定义方法 struct stu { char *name; //姓名 int num; //学号 int age; //年龄 }; /**定义一个结构体的意义: 声明了一种新的数据类型, */
- 定义新类型的变量:
// struct stu stu1,stu2; struct stu stu1,stu2;
定义新类型时:
- 定义结构体的同时定义结构体变量:
//定义结构体的同时定义结构体变量: struct stu{ char *name; //姓名 int num; //学号 int age; //年龄 } stu1, stu2;
- //只需要 stu1,stu2 两个变量,后面不需要再使用结构体名定义其他变量
//只需要 stu1、stu2 两个变量,后面不需要再使用结构体名定义其他变量 struct{ //没有写 stu char *name; //姓名 int num; //学号 int age; //年龄 } stu1, stu2;
- 定义时整体赋值
struct{ char *name; //姓名 int num; //学号 int age; //年龄 } stu1, stu2 = { "Tom", 12, 18, 'A', 136.5 }; //结构体数组在定义的同时也可以初始化,例如: struct stu{ char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在小组 float score; //成绩 }class[5] = {//当对数组中全部元素赋值时,也可不给出数组长度: class[] = { {"Li ping", 5, 18, 'C', 145.0}, {"Zhang ping", 4, 19, 'A', 130.5}, {"He fang", 1, 18, 'A', 148.5}, {"Cheng ling", 2, 17, 'F', 139.0}, {"Wang ming", 3, 17, 'B', 144.5} }
结构体指针
struct stu *pstu = &stu1;
获取结构体成员
通过结构体指针可以获取结构体成员,一般形式为:
(*pointer).memberName
或者:
pointer->memberName