自定义函数及函数调用

在论坛中,发现有的道友对自定义函数的调用存在这以下问题:
1、自定义函数声明、函数调用、函数实现概念混淆
2、形参和实参混淆;
3、自定义函数参数的传值方式混淆;传来传去都不知道传的到底是什么?
接下来,我就重点围绕道友们常见的问题,说一说:
1、自定义函数声明、函数调用、函数实现
比如:交换两个数的值的自定义函数swap
函数声明方式: void swap(int &a,int &b);
函数实现方式:void swap(int &a,int &b) { int temp=a;a=b;b=temp}
函数调用方式:swap(a,b);
通过这个实例就可以明显看到三者之间的区别。但是要说明几点:
(1)函数调用方式里面的参数名和函数声明(实现)的参数名可以不相同,因为它只是一个名字,只需要保证他们参数的类型和参数的个数一致;
(2)函数声明和实现方式里面的参数名、参数类型、以及参数个数必须一致。
2、形参和实参混淆
形参是函数实现(声明)里面的参数,而实参是函数调用里面的参数;如:
void swap(int &a,int &b) { int temp=a;a=b;b=temp} 里面a,b是形参
swap(a,b)里面的a,b是实参
3、传值和传址方式
很多道友都知道传值是把值传进去,而传址是把数的地址传进去;
由于自定义函数在调用完成之后就会被释放,所以如果采用传值的方式,即使变量的值在自定义函数里面发生了变化,也不会把变化的值传回来,实质上不会改变变量的值。(参数的传递方式是单向的。)
而传址是把地址传进去,自定义函数是直接访问的是变量的地址,然后把该地址存储的数值改变了,所以即使自定义函数最终被释放了,变量的值还是会改变。
明白这些后,很多道友又会有新问题,就是什么时候传值、什么时候传址?其实很简单,如果你不需要改变变量的值就传值,需要改变变量的值就传址。例如:
(1)求和的自定义函数:get_sum,用传值方式,因为实现的是求和,并不需要改变a,b的值,当然你也可以用传址。
void get_sum(int a,int b){
int sum=a+b;
}
(2)交换a,b的值:swap,用传址方式,因为我要改变a,b的值;如果用传值的话,a和b的值不会交换;
void swap(int &a,int &b)
{ int temp=a;a=b;b=temp}

总的来说,可以用传值的,也可以用传址;但是必须用传址的,就不能用传值方式。

为了便于道友们向我咨询问题,特意开设了一个免费的知识星球——CaptianXue,星球提供学习、理财、生活、职场等各类文章和免费答疑!!
在这里插入图片描述g)

  • 11
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
函数名称 描述 PL_3d? 如果多段线的检查是3D或不 PL_AddPoint 加入一个新的多段线点之前指定的顶点数量VxNum PL_Arced? 如果检查多段线有至少一个弧段 PL_ArcPl2LinearPl 重建更换指定的距离直线段只有所有弧段的多段线列表。 PL_BoundPoly 创建直线,多段线和/或圆周围的边界多边形 PL_BreakX 在这一点上打断多段线 PL_DelPoint 从多段线删除点 PL_DividedPoints 返回除以给定的多段线(无论是在“实体”的形式或列表的形式)所获得的点 PL_DrawLeaders 沿线各段多段线绘制的领袖,从而呈现出多段线的流动方向。 PL_DrawLeaders2 沿线各段多段线绘制两端箭头。 PL_facelist 返回从一个多面对象的面部定义列表 PL_Fitted? 检查是否有多段线在选集中 PL_FlipArcedPolyline 翻转(反转)的圆弧(2D)多段线使用特殊技巧 PL_Get2dPolyElev 找到一个二维多段线的标高 PL_GetBulgeLst 返回凸出圆弧多段线列表 PL_GetMiddlePoint 查找行的中间点,多段线,圆弧或样条线对象 PL_GetSlope @点 在某一时间点的斜率的曲线对象 PL_GetVxEntl 返回完整的实体,包括多段线顶点实体的实体列表的列表, PL_GetWidths 返回一个列表的开始和结束段多段线宽度 PL_MapMask 创建出多段线和/或圆形的不透明的面具,变成区实体。 PL_MeasuredPoints 返回通过测量给定的多段线(无论是在“实体”的形式或列表的形式)获得的分 PL_Mesh? 如果一个多段线对象的检查是一个三维网格对象或否 PL_mk_pl 给个列表,绘制多段线或LWPOLYLINE的entmake功能 PL_mk_pl_feed 给个列表,绘制多段线或LWPOLYLINE的,使用命令行坐标传输; PL_NewPoint 在指定的顶点更新多段线点 PL_Open? 判断多段线的检查是打开“或”不 PL_plist 返回一个LWPOLYLINE或多段线点表 PL_PlJoin 连接选择集中多段线或线段。 PL_plpick 多段线挑毛,挑个毛,看里面。 PL_PolyFace? 检查多段线对象是否是一个多面网格 PL_ReconstructPoly 重建炸开的多段线对象 PL_SeekMain 寻求从顶点名主要实体名称 PL_Spl2Pl_Int 转换到一个正常的多段线样条或ELLISPE对象的插值方法 PL_Splined? 检查是否拟合多段线 PL_SplitPoly 拟合多条多段线。 PL_SplPl2Pl 拟合多段线转换到正常的多段线 PL_UpdateLine 更新与两个新端点的线对象。保持所有行属性,包括句柄 PL_UpdatePoly 更新一个新的顶点列表的多段线实体。保留所有多段线特性:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值