结构的概念与定义
- 结构类型是把数据分量聚合成一个整体的数据类型,这些数据分量称为结构成员或者结构分量,是一种构造数据类型(派生数据类型)
struct stuudent{
int id;
char namw[20];
};
- struct 是定义结构类型的关键字,struct与结构名两者合起来共同组成结构类型名(数据类型名)。
- 结构体以分号结束
- 结构的嵌套定义,在定义嵌套的结构类型时,必须先定义成员的结构类型,再定义主结构类型
结构变量的定义
- C语言编译器只有早都没怀疑相应的结构变量后才为其分配存储单元
- 定义的三种方式
- 1)单独定义:先指定一个结构类型,再定义这种结构类型的变量
struct stuudent{
int id;
char namw[20];
};
struct student stu;
struct stuudent{
int id;
char namw[20];
}stu;
struct{
int id;
char namw[20];
}student;
结构变量的初始化
- 可以在定义时对其赋值,赋值的顺序与定义的顺序一致,数据类型也要保持一致;
- 结构类型变量的存储布局暗器类型定义中成员的先后顺序排列
struct student stu={1001,"zhangsan"};
结构变量的使用
- 结构变量的整体赋值:如果两个结构变量具有相应的类型,则允许将一个结构白能量的值直接赋给另一个结构变量,对成员变量内部的每一个值都进行赋值操作
- 对于参数较多的大型结构,参数传递时所进行的结构数据复制使得效率较低
struct student stu1,stu2;
stu1.name="zhangsan";
stu1.id=1001;
stu2.name="lisi";
stu2.id=1002;
stu1=stu2;
等价于
s1.id=s2.id;
strcpy(s1.name,s2.name);
结构指针
- 结构指针:指向结构体类型变量的指针,结构指针的值实际上是结构变量的首地址,即第一个成员的地址;
struct student stu,*p;
p=&stu;
(*p).num=101;
或者 p->num=101;
结构指针作为函数参数
- 结构变量可以作为函数参数,在参数传递时候是吧实参结构种的每一个成员值传递给形参结构的成员,但是,当结构成员数量众多时,在参数传递过程种就需要小号很多空间,而使用结构指针作为函数参数只要传递一个地址值能够极大地提高参数传递的效率。