传参的三种方式
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的值。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南