C语言中如何构建一个函数,来交换两个变量的值(详解、易懂)

        首先我们要知道交换两个变量的值的原理,在C语言代码中,= 代表的是赋值运算,所以并不是a=b,b=a就可以了,因为当你写a=b的时候,a和b就都是b的值了,再去让b=a,两个数依然都是b的值,没办法交换。

        所以,我们需要设置第三个变量去提供一个“临时帮忙”的作用。比如额外重新声明一个c的变量,让c=a,a=b,b=c,这个时候a和b的值就互相交换了。当c=a的时候a和c的值都为a,a=b的时候a为b了,成功一半了,最后再让b=c,而c第一步已经被a赋值了,所以b就成为了a的值。

        打个比方:有两杯满满的液体,一杯岩浆,一杯冰水,他们两个想要交换位置,我们只能再拿一个杯子去先盛放其中的一杯液体,再去进行交换。

        理解了两个值交换的原理,我们就可以开始着手这道题的解法了。用函数去交换,也就是在main函数外自定义一个函数,那么和普通的c=a  a=b b=c还不太一样。在本题中,我们不能直接传送实参(也就是main函数里的abc),因为形参(自定义函数里的abc)只是实参(main函数里的abc)的一份临时拷贝,就好比克隆羊多利,多利是死是活都不会影响到原来的羊。在函数里改变形参完全不会影响实参,那么我们应该怎么办呢?(下图为传送实参的错误示范,可以看到输出窗口里的4和5并没有进行交换)

        既然传值调用不能用,那我们可以采用取地址的方法,让函数从传值调用变成传址调用

        把函数里的传值加上取地址符&,并在函数change(函数名可以自定)中的*pa,*pb(指针符号),就可以把a和b的地址传送到函数里了,如此一来,便可以通过指针去找到main函数中的a和b,直接去改变a和b。(以下为正确示范,即传址调用)

        最后,不一定是所有函数都适合传址调用,比如求较大值的函数,返回的数值和main函数内原本要求的较大值是一样的,传值调用相对来说更加简便和直观一些,就不需要再用传址调用啦。

        以上就是本篇博客的全部内容啦,由于博主才疏学浅,难免会出现纰漏,希望大佬们能够不吝赐教,在评论区或者私信指正都可以,博主一定及时修正

        那么大家下期再见啦~~

猜你喜欢

转载自blog.csdn.net/weixin_70218204/article/details/127132164