C语言函数中的传值和传址

壮心未与年俱老,死去犹能作鬼雄。这篇文章主要讲述C语言函数中的传值和传址相关的知识,希望能为你提供帮助。
【C语言函数中的传值和传址】?在C语言里,函数调用是必不可少的。而C语言中函数传参有两种方式:传值和传址

一、传值:传值是实参传递到形参,形参开辟新的地址空间,形参的改变不会影响到实参。
?代码如下:?


可见,在a,b进行了交换函数swap()过后,发现结果还是一样,结果如下:

由此可知,在程序运行的时候,a,b传值进入x,y中,在swap()函数里面,交换了x,y的值,而a,b的值并没有交换。那怎么解决a,b交换呢?如下。
二、传址:?这种方式使用数组名或者指针作为函数参数,传递的是该数组的首地址或指针的值,而形参接收到的是地址,即指向实参的存储单元,形参和实参占用相同的存储单元,这种传递方式称为“参数的地址传递”。
代码如下:


通过传址,在a,b进行了交换函数swap()过后,发现结果得到了交换,结果如下:

由此可知,传址时,x,y得到的是a,b的地址,只需要通过解引用就能找到a,b地址间接的进行对a,b的操作,所以a,b的值得到交换。
总而言之:
一、传值调用:函数的形参和实参分别占有不同的内存块,对形参的修改不会影响实参。         
二、传址调用:@传址调用时把函数外部创建变量的内存地址传递给函数参数的一种调用方式。                                           
                        @这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量。

    推荐阅读