第七章 函数(5)函数和结构
2019-12-17 本文已影响0人
阿厉a_li
(五)函数和结构
1.结构的使用
函数可以像使用普通变量那样使用结构变量,可以通过复制结构变量的内容和返回一个结构体来使用结构。(数组不允许作为参数,函数使用数组的时候,只能传递数组的地址,也就是使用数组的相应的指针来完成,这也是结构和数组的区别,也是数组使用起来比较复杂的原因)。然而,如果结构体很大很复杂,那么,通过传递结构的指针成为一种更有效的方法。
结构传递的方式有三种:一种是直接传递整个结构实参到形参,也就是复制一个结构的副本;第二种是传递结构的指针;第三种是传递结构的引用。
2.传递和返回结构
当定义了结构之后,结构就像一个标准的类型名,可以用来声明变量,函数的返回类型,和函数的参数类型。这种方法就是使用结构的按值传递,此时我们使用的是一个结构的副本。
小知识:cmath中atan(x)和atan2(y,x)的区别,首先,ata(x)函数就是数学上的反正切函数,取值范围是(-pi/2,pi/2);而atan2(y,x)函数是计算(x,y)这个点与原点的夹角值,返回的也是弧度,只不过在某些特殊点(比如pi/2)也是有意义的,返回值的范围是(-pi,pi]。
3.传递和返回结构的地址
通过使用地址作为参数,可以使用运算符pda->x表示pda的成员变量x,这里的pda是一个指针(地址),相当于对象加.的用法。如果我们不需要对原来的结构进行修改,那么就使用const限定符使指针成为常量指针,如果需要修改,则不用const。还要注意有时候不需要返回值,因为我们已经修改过了原数据,而不是副本,我们直接使用源数据就可以了。
结构的第三种用法是传递和返回结构的引用,这种用法同传递和返回地址本质上是一样的,同样可以选择使用或不使用const来修饰引用变量,引用其实就是原变量的一个别名。