结构体与共用体的基本应用"/>
项目十结构体与共用体的基本应用
结构体与共用体的概述
在C语言中,构造类型是把多个数据结合在一起,并将每个数据称作为构造类型的”成员“。
数组就是构造类型中的一种,由多个相同数据类型的"成员"组成.。结构体和共用体可以由多个不同数据类型的“成员”组成。
共同体类型同结构体类型一样,属于构造类型,也称联合体,定义方法都相同
共同体类型同结构体类型之间的区别:
- 结构体的各个成员会占用不同的内存,互相之间没有影响;
- 共用体的所有成员占有同一段内存,修改一个成员会影响其余成员;
- 结构体占用的内存大于等于所有成员占有的内存的总和;
- 共用体占用的内存等于最长的成员占用的内存;
- 共用体使用了内存覆盖技术,同一时刻只能保存一个成员的值,如果给新的成员赋值,就会把原来成员的值覆盖掉
结构体
-
结构体类型的定义
在定义之前,需要先定义结构体类型,再次定义该结构体类型的变量
- 结构体类型定义的一般形式:
struct 结构体类型名称 {成员类型1 成员名1;成员类型2 成员名2;...成员类型n 成员名n;
};
其中,Struct是关键字,结构体类型名称的命名规则满足标识符命名规则,用于标识该结构体类型。成员类型可以是任意的数据类型,包括基本类型、指针类型、数组类型、结构体类型等。成员名是该成员在结构体中的名称。
例如,定义一个学生信息的结构体:
struct Student {int id; // 学号char name[20]; // 姓名int age; // 年龄float score; // 成绩
};
这里,Student是一个结构体标识符,id、name、age和score是该结构体的四个成员,分别表示学生的学号、姓名、年龄和成绩。
- 类型定义的一般形式
typedef 已有类型 新类型名;
其中,已有类型可以是任意的数据类型,如int
、float
、char
、struct
等,新类型名是你自己定义的一个新类型名,可以是任意合法的标识符。
例如,定义一个int
型别名my_int
:
typedef int my_int;
这样,我们就可以使用my_int
来代替int
的使用:
my_int a = 100;
结构体变量
结构体定义后可以作为一种已存在的数据类型使用,但是它只是一个模型,没有具体的数据,只是告诉编译系统该结构由哪些数据类型组成,各占多少字节,并当成一个整体处理,同时编译系统没有在内存中给结构体分配内存空间
-
结构体(struct)变量的定义
- 先定义结构体类型,在定义结构体变量
struct 结构体类型名
{数据类型 成员名1;数据类型 成员名2;...数据类型 成员名n;
};
struct 结构体类型名 变量名;
示例代码如下:
struct student
{int sno;char name[10];char classname[20];float qrade[5];
};
struct student stul;
这里定义了一个名为 student
的结构体类型,它有四个成员,分别为学号 sno
、姓名 name
、班级名称 classname
和五门课程的成绩 grade
。然后定义了一个结构体变量 stul
,该变量的类型为 struct student
。
- 在定义结构体类型同时定义结构体变量
struct 结构体类型名
{数据类型 成员名1;数据类型 成员名2;...数据类型 成员名n;
}结构体变量;
示例代码如下:
struct student
{int sno;char name[10];char classname[20];float qrade[5];
}stul;
这里定义了一个名为 student
的结构体类型,和之前一样,它有四个成员,分别为学号 sno
、姓名 name
、班级名称 classname
和五门课程的成绩 grade
。在结构体类型定义的最后,直接定义了一个名为 stul
的结构体变量,该变量的类型为 struct student
。
- 直接定义结
更多推荐
项目十结构体与共用体的基本应用
发布评论