一、结构体基本概念
结构体将不同类型的数据进行整体封装,根据需求由用户来设定。这些成员之间都是有联系的,比如表示一个人的姓名、年龄性别等信息。如果它们被定义成独立的量,就无法说明它们之间的联系。
声明一个结构体类型的一般形式为:
struct Student
{
char id[8];
char name[8];
char sex[4];
int age;
};
其中,struct为结构体关键字,Student为结构体名,成员名的命名规则与变量类似。该结构体开辟的空间为26字节。
定义结构体变量时,.c文件和.cpp文件都支持以下形式:
struct Student s1;
进行初始化时,用以下方式进行:
Student s1={"2010222","qiao","fe",18}
二、结构体中需注意的问题
1、同类型的结构体变量可以相互赋值,和内置类型同理。
struct Student stu1={"20201","xiaohm","man",19};
struct Student stu2=stu1;
struct Student stu3;
stu3=stu1;
注意:设置同属性的不同类型的结构体变量,是不能相互赋值的。强转也不允许赋值。
2、结构体的重新解释
struct Student stud1={"202001","xiaohm","man",19};
struct Student *sp=&stud1;
struct Emp a={"201008","lihua",23,8700};
struct Student *ep=&a;
ep=(struct Emp*)sp;
一般不允许这样的结构转换,对内存识别失去了原有的意义
3、结构体两种不同的设计方案(数组与指针)
4、结构体的嵌套问题
不同结构体之间可以相互嵌套
5、结构体不能定义它自身,但能定义指针
不能够编译通过的原因:形成了无限嵌套,无法计算结构体大小。
指针类型大小4或8,结构体大小可计算。这样设置与数据结构中的链式结构有关。