小蚂蚁学习C语言(24)——C语言结构体——结构体变量和结构体指针变量

结构体变量和结构体指针变量作为函数参数传递的问题(主要是说指针的优点

    推荐使用结构体指针变量作为函数参数来传递。

对结构体的内容输入输出

/*
    对结构体输入输出的案例
*/
# include <stdio.h>
# include <string.h>
//为需要调用的三个函数,设置前置声明
void InputMember(struct student * pMem);
void OutputOne(struct student * pMem);
void OutputTwo(struct student pMem);
//定义一个结构体
struct student
{
    char name[30];
    int age;
    float score;
};    //这个分号不能省略
int main(void)
{
    struct student member;
    /*
        输入函数,要想跨函数修改值的内容,必须传递指针
    */
    InputMember(&member);
    /*
        输出函数,传递指针输出
    */
    OutputOne(&member);
    /*
        输出函数,传递内容输出
    */
    OutputTwo(member);
    return 0;
}
/*
    定义形参为指针变量,可以跨函数对变量修改
*/
void InputMember(struct student * pMem)
{
    strcpy(pMem->name,"张三");
    pMem -> age = 23;
    pMem -> score = 89.5;
}
/*
    通过接受指针的方式,进行输出
*/
void OutputOne(struct student * pMem)
{
    printf("%s\n%d\n%f \n", pMem->name, pMem->age, pMem->score);
}
/*
    通过赋值的方式进行输出
    之所以把这两个函数放到一起写,主要是为了区别:
        传递指针 和 传递数据 的区别
*/
void OutputTwo(struct student pMem)
{
    printf("%s\n%d\n%f \n", pMem.name, pMem.age, pMem.score);
}
/*
    VC++6.0上运行的结果:
    =====================================
    张三
    23
    89.500000
    张三
    23
    89.500000
    =====================================
    结论:
        输入函数,必须使用指针操作。
        输出函数,传递指针和传递数值结果都是正确的。
            但!是!对内存的消耗和执行效率上是不同的。
*/

到底是发送指针还是发送内容

    指针的优点之一:

        快速的传递数据

        耗用内存小    

        执行速度快

        

    假如有一个占用100字节的类型,如果发送内存的话,在函数中也同样需要开辟出100字节的内存,用于存放发送过来的值,这就消耗了内存。内存开辟出来之后,还要把这100字节的内容给拷贝到函数开辟的内存中,这就消耗了时间。既浪费了内存,又耗费了时间,so,还是推荐使用传递指针的方式。

    这就是指针的优点。


 学PHP的小蚂蚁 博客 http://my.oschina.net/woshixiaomayi/blog



转载于:https://my.oschina.net/woshixiaomayi/blog/548153

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值