目录
概念
结构体变量是指将不同的数据类型整合成一个有机的整体,以便于调用。
struct Student
{
int num;
char name[20];
int score;
}
Student stud1;//stud1就是结构体变量
结构体指针变量是指指向结构体变量的指针或者指向结构体数组的指针。
Student *stud2;//结构体指针变量
内存分配
在C语言中都是使用库函数malloc和free来分配和撤销内存空间的。C++中提供了较简便而功能较强的运算符new和delete来取代函数malloc和free函数。注意:new和delete是运算符,不是函数。
int main
{
Student *p
p = new Student //用new运算符开辟一个存放Student型数据的空间
.
.
.
delete p; //使用完之后一定要撤销该空间
return 0;
}
对象的引用
结构体变量引用成员变量的方式是:
结构体变量名.成员变量名
指针引用结构体变量成员的方式是:
(*指针变量名).成员变量名 //*指针变量名 两边的括号不可以省略
指针变量名->成员名 //->”是“指向结构体成员运算符”,它的优先级同结构体成员运算符“.”一样高。
结构体变量和结构体指针变量作形参的区别
结构体变量作为函数形参。此时sc_para和tm_para传递的是两个结构体变量,包含其内部所有的成员变量,占用的内存空间自然而然就大,具体大小取决于结构体变量的大小。
int REF_STRUCT_PARAM(
SC_PARAMS sc_para,
TM_PARAMS tm_para
) //SC_PARAMS和TM_PARAMS是两个结构体类型
结构体指针变量作为函数形参。此时*sc_para和*tm_para传递的是两个指针变量,一个指针只占用四个字节空间,而且存储的是结构体变量的首地址。修改为指针后速度变快,占的内存空间也减小。
int REF_POINTER_PARAM(
SC_PARAMS* sc_para,
TM_PARAMS* tm_para
) //SC_PARAMS和TM_PARAMS是两个结构体类型
以结构体变量和结构体指针变量形参的函数调用
以结构体变量作形参的函数的调用,函数形参部分直接调用定义的结构体名即可。
int main
{
SC_PARAMS sc_para;
TM_PARAMS tm_para;
int REF_STRUCT_PARAM(sc_para, tm_para); //SC_PARAMS和TM_PARAMS是两个结构体类型
return 0;
}
以结构体指针变量作形参的函数的调用,函数形参位置要引用结构体地址。
int main
{
SC_PARAMS* sc_para;
TM_PARAMS* tm_para;
int REF_POINTER_PARAM(&sc_para, &tm_para); //SC_PARAMS和TM_PARAMS是两个结构体类型
return 0;
}