【摘要】:例6-18中先构造一个结构类型struct POINT,然后定义一个返回struct POINT类型的函数,该函数mkpoint返回一个struct POINT 结构类型的值,这个值可以赋给任何struct POINT结构类型的变量。但在mkpoint结束时temp的值被作为函数值返回,与变量的撤销无关。我们可以把这种情况与简单类型局部变量的值作为返回值的情况做个对比,除了结构变量可能占用较大存储空间外,两者在其他方面的情况完全一样。上面这些例子采用结构参数或者结构返回值。
6.5.2 结构型函数
结构型函数是指处理结构型参数的函数。下面通过一些简单的例子来说明。
例6-18 求平面两点之间的殴氏距离。
例6-18中先构造一个结构类型struct POINT,然后定义一个返回struct POINT类型的函数,该函数mkpoint返回一个struct POINT 结构类型的值,这个值可以赋给任何struct POINT结构类型的变量。这种函数的特点是从结构成员的值出发构造出结构值,接着使用如下函数:
pt1=mkpoint(3.0,20.0);
pt2=mkpoint1(pt1.x+5,0.0);
注意,函数mkpoint里的temp是局部的结构变量,它将随着mkpoint结束而撤销。但在mkpoint结束时temp的值被作为函数值返回,与变量的撤销无关。我们可以把这种情况与简单类型局部变量的值作为返回值的情况做个对比,除了结构变量可能占用较大存储空间外,两者在其他方面的情况完全一样。当然,前面提出的问题在这里也出现了,对于很大的结构,返回结构值就要做较多的复制工作。
最后考虑定义一个计算两个点之间距离的函数,它也采用普通的结构参数。
上面这些例子采用结构参数或者结构返回值。函数调用时,实参结构的值被整个赋给函数内的形参;而作为函数计算结果的结构值建立副本,在函数退出之后再赋给指定变量。这种定义方式的优点是语义非常清楚,函数内外的计算互不干扰。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。