传值调用与传址调用

简介: 传值调用与传址调用

一:引入

写一个函数,交换两个整型的值

发现并没有达到期待的结果,这是为什么呢?


发现在main函数的内部,创建了变量a和b,a的地址是 &a 0x0088f8a4,b的地址是0x0088f898 ,在调用Swap函数是,在函数内部创建了形参x和y,接收a和b的值,但x的地址是0x0088f7c0 ,y的地址是0x0088f7c4,与a和b的地址不同,只是接收了a和b的值,相当于x和y是独立的空间,在Swap函数内部交换x,y的值不会影响a,b的值.

二:传值调用

函数在使用的时候把变量本身直接传递给了函数,这种调用方式称为传值调用。

传值调用:实参传递给形参的时候,形参会单独创建一份临时变量来接收实参,对形参的改变不会影响实参。

比如

三:传址调用

如果使用指针将a,b的地址传递给Swap函数,Swap通过地址间接操作就可以交换a,b的值了,这种方式称为传址调用。


四:总结

当需要改变main函数中变量的值时,往往需要使用传址调用。

当比较,+,-,*,/,等不需要改变main函数中的值时,往往需要传值调用。




目录
相关文章
|
3月前
|
C++
魔法指针 之 assert断言 传址调用 传值调用
魔法指针 之 assert断言 传址调用 传值调用
28 0
|
8月前
|
C语言
用指针函数变量调用函数
用指针函数变量调用函数
29 2
|
C++ Python
Python函数参数传递:传值还是传引用
Python函数参数传递:传值还是传引用
63 0
|
8月前
数组参数和指针参数
数组参数和指针参数
41 2
我应该使用按值调用还是按引用调用?
我应该使用按值调用还是按引用调用?
|
8月前
传址与传值
传址与传值
37 0
函数的传值调用和传址调用
函数的传值调用和传址调用
|
C语言
C语言 传址调用、二级指针做参数
空间的操作有两种: 名字,地址。如果传名字不行,传地址一定可以。 如果使用变量改变函数外部的参数时,要定义全局变量,如果使用局部变量的话,并不能实现该功能。例如:(不能实现改变外部变量的值)
116 0
C语言 传址调用、二级指针做参数
|
编译器
【为什么】将指针传递给函数
【为什么】将指针传递给函数
|
C语言
【C语言函数调用详解】——传值调用&传址调用
【C语言函数调用详解】——传值调用&传址调用
462 0