传参的三种方式
1.按值传递
形参和实参各占一个独立的储存空间,形参的储存空间是函数被调用才分配的,调用时,系统为形参开辟一个临时的存储区然后将各实参传递给形参,这时形参就得到了各实参的值。
2.地址传递
形参得到实参的储存地址,使得形参指针和实参指针指向同一块地址,因此函数中对形参的造成的任何变化都能影响到实参。
3.引用传递
以引用为参数,对形参的任何操作都会对实参进行相应改变。
猜测:(不一定对,突然想起来就写了写自己的想法,要是有大佬指正就太感谢了,继续忙该死的二叉树去了,他妈的真累啊)
比如有一个class C{};
C* c;//这是声名c是一个C类的一个对象,但是此时c没有得到初始化。
c = new c();//这是c得到初始化(暂时不执行此句)
现在有三个函数,一个是
void max(C *c){/*...*/};//打咩,因为传参时需要c的堆内存地址。
一个是
void min(C c){/*...*/};打咩,因为传参时需要接受c的数值。
最后一个是
void middle(C &c){/*...*/};呦西,因为传参传的是c的引用,不需要c的地址或是开辟空间接收c的值。