结构体变量和指向结构体变量的指针

目录

概念

内存分配

对象的引用

结构体变量和结构体指针变量作形参的区别

以结构体变量和结构体指针变量形参的函数调用


 

概念

结构体变量是指将不同的数据类型整合成一个有机的整体,以便于调用。

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;
}

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值