首页 > 代码库 > 数据封装-结构体

数据封装-结构体

结构体类型作用

*结构体类型允许程序员把一些分量聚合成一个整体,用一个变量表示。
*一个结构体的各个分量都有名字,把这些分量称为成员(member)。
*由于结构体的成员可以是各种类型的,程序员能创建适合于问题的数据集合。
 
结构体类型的定义
*定义结构体类型中包括哪些分量
*格式:
  struct 结构体类型名{
  字段声明;
  };
 
注意
*字段名可与程序中的变量名相同
*在不同的结构体中可以有相同的字段名
*结构体成员的类型可以是任意类型,当然也可以是结构体类型
 
结构体变量的初始化
studentT student1={“00001”,“张三”,87,90,77};
 
定义结构体类型的同时定义变量
struct 结构体类型名{                          struct{
  字段声明;                                     字段声明;
}结构体变量;                                     }结构体变量;
区别:前者可以继续用结构体类型名定义变量
 
结构体变量的赋值
同类型的结构变量之间可以相互赋值,如
student1=student2;
将student2的成员对应赋给student1的成员
这点很重要!!
 
指向结构体的指针
*直接定义指针变量

      studentT  *sp;

*也可以在定义结构体类型的同时定义指向结构体的指针

struct 结构体类型名{

     字段声明;

}  *结构体指针;

 

通过指针操作记录

*给结构体指针赋值,如:

     sp = &student1;

*结构体指针的引用:

(*指针).成员      如:(*sp).name

 指针->成员     如:sp->name

*->是所有运算符中优先级最高的

*通常程序员习惯使用第二种方法
 
动态分配结构体的空间
v指向结构体指针的另一种用法是存储动态申请到的内存的首地址。用法和申请普通的动态变量一样。如:

      studentT  *sp;

      sp = new studentT;

 

结构体数组

*用于描述个体的集合

*定义格式:

 studentT studentArray[SIZE]

 

指针与结构体数组

*与普通的指针一样,指向结构体的指针也能够用来指向一个结构体数组。此时,对指针加1就是加了该结构体的大小。
 
指向结构体的指针作为参数
*因为结构体是值传递,当希望把函数内部对结构体的修改返回给主调函数时,可以用指针传递或引用传递
*由于结构体一般占用的内存量都比较大,值传递既浪费空间又浪费时间。因此可用指针传递或引用传递
*指针传递形式比较繁琐,所以C++通常用引用传递
*引用传递的问题是函数中可以修改实际参数,要控制函数中不能修改实际参数,可以加const限定
引用传递&加const=节约内存,提高函数调用速度,安全可靠
 
函数返回结构体返回的是结构体的复制(对类而言也是如此,这样的话就会调用拷贝构造函数)

数据封装-结构体