C语言-学习心得(2)

扫盲后总结出来的要点[1] :http://blog.csdn.net/qq1130141391/article/details/40117303


下面是我扫盲后总结出来的要点:

1、C语言的函数不等同于数学的函数

在数学中函数y=2x+1,x作为输入值,y作为结果。在编程上看,x是入参,y是返回值(return value)。

在C语言中,实现y=2x+1是绝对是没有问题的。如代码:

 

  但如果入参是一个大数据(如结构体,大小是相对基本数据类型来说的)作为入参,如代码:

  

    虽然这样用C语言来实现的代码也是没问题,但是C语言并推崇这种实现方式。为什么呢?效率低!

    C语言推崇如下实现方式:

    

      这两段代码主要的区别在于参数是如何传递的。

      第一段代码 : 需要额外开辟一段COMM_PARA类型的临时内存,并进行赋值操作(将入参赋值给这个临时内存)

      第二段代码 : 没有产生额外的临时内存(当然指针是占内存的,函数的参数传递机制也产生一个临时的指针),

                   只是获取入参的首地址。

      对比这两段代码,无疑第二段代码的效率更高。

2、C语言的数据是异地操作的

  这话是说得过于绝对了,像[1]中的y=2x+1的数据没有异地操作。

只是C语言中,设计的很多函数都是异地操作的,C语言喜欢这样的设计方式,效率高嘛!

如代码:

从这段代码,可以看到,变量stCommPara是在main函数中获得内存的(地方1),

在Comm_InitPara函数中修改stCommPara的值(地方2),这样就完成在地方2

修改地方1的变量(分配的内存)。

这里异地操作是通过指针传递参数实现的,高效,C语言推崇的。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值