C语言中函数调用的两种方式——传值调用、传址调用-创新互联

传值调用:

创新互联公司是网站建设技术企业,为成都企业提供专业的网站设计、网站制作,网站设计,网站制作,网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制适合企业的网站。10余年品质,值得信赖!

[ 适用于外部函数返回数值给主函数,但不通过外部函数改变主函数变量的值]

如:输出了两个数的大值,代码如下图。

c4781e0d3dda42d794f65a081f4b78fa.jpg

分析:MAX函数输出大值返回给主函数,主函数执行printf语句直接打印,并没有通过MAX函数改变主函数的变量,只是返回了一个数值给主函数,所以适用于传值调用的方法。


传址调用:

[适用于外部函数直接改变主函数变量的数值]

如:将a、b两个变量的数值交换,代码如下图。

727b162c65be48a18b2036a48b58dcd3.jpg

分析:swap函数直接通过变量a、b的地址对主函数的变量a、b的数值进行控制并交换。以实现通过外部函数swap改变主函数的变量,所以适用于传址调用的方法。


为什么会存在传址调用呢?

当需要通过外部函数改变主函数的变量时,如:面对问题“将a、b两个变量的数值交换”时。若使用传值调用,代码如下图。

604ee4f707ce44f59c9a35d05837f27a.jpg

以上代码工作原理:相当于将变量a、b的数值拷贝一份,然后外部函数的变量pa、pb开辟出内存来接收拷贝出来的a、b数值,然后外部函数将拷贝得来的数值进行交换,然而外部函数的变量pa、pb与主函数的变量a、b没有任何关联,所以主函数的a、b数值并没有得到交换。代码运行结果如下。

239f2bcbe25c40ed85982e9783d18088.jpg

可以看出a、b数值并没有得到交换。

若使用传址调用的方法解决a、b数值交换问题时,代码如下图。

73127cd0cedf4e748972a85b27ef7431.jpg

以上代码工作原理:通过地址,使外部函数变量pa、pb与主函数变量a、b建立关系,实现外部函数改变主函数的变量。主函数将变量a、b的地址传入外部函数变量pa、pb中,外部函数通过地址找到主函数变量a、b的位置并直接对主函数变量a、b的值进行交换。代码运行结果如下。

bb2480a333684336af5970c9ca505a03.jpg

可以看到使用传址调用的方式成功使a、b的数值得到交换。


总的来说:判断何时使用传值调用,何时使用传址调用时,关键要看是否需要使用外部函数对主函数的变量进行操作。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


标题名称:C语言中函数调用的两种方式——传值调用、传址调用-创新互联
网站链接:http://scyanting.com/article/djjdie.html