1. 每次调用函数时都会重新创建函数的形参,此时所传递的实参则用来初始化创建的形参.
2. 形参的初始化和变量的初始化是一样的方式,如果形参是引用类型则是实参的一个别名,如果形参是非引用类型,那么则会复制该实参用来初始化形
参.
1. 指针形参
指针形参是作为值类型来进行传递的,也就是说修改指针所指向的对象是无效的,而修改指针指向对象的值是有效的.
例如
指针A - > 对象V
指针B - > 对象V
*A=100; 有效,因为不管形参是不是实参的副本,或者说不管是形参还是实参他们都是指针而指针的基础则是指向一个对象,那么指针A和指针B则是指向同一个对象的指针,则修改指针所指向的对象的值是有效的,而把指针A指向另一个对象则相对实参指针来说是无效的.
注意: 可以将指向const对象的指针初始化为非const的对象,但是不可以让非const的指针初始化为const对象,这点源于值类型初始化是复制初始化式的值.
值初始化并不是在所有情况下都适合的:
1. 需要在函数中修改实参的值.
2. 当需要以大型对象作为实参时,付出的复制对象的时间和存储空间将会很大.
3. 当没有办法实现对象的复制时(如类类型没有或者没有public的构造函数)
2. 引用实参
使用引用形参则可以避免上述的3个问题,引用实参也是每次调用函数时进行创建相关的形参,之后关联上对应的实参.
参数设置为引用类型的参数,则在函数体内的任何改变引用所指向对象的值的操作都将关联到实参.
使用引用形参还可以返回额外的一些信息,比如函数的返回值只能有一个,当需要返回多个值时,则可以选择使用引用参数进行实现.
![](https://img-my.csdn.net/uploads/201301/08/1357658841_9854.png)