函数的传参问题

首先要明白为何函数要进行参数传递?

为了实现程序中各功能的模块化,将各个功能模块单独地写成一个函数,在主函数或其他要用到该功能模块的函数中去调用该函数,从而达到程序中功能的模块化,提高整个程序的可读性。

那么被调函数和主调函数之间如何进行信息通讯呢?就要通过函数传参来实现。当然,也可以用全局变量来实现调函数和主调函数之间的信息传递,但是大量使用全局变量不利于整个程序的模块化,而且随着程序变得庞大起来,程序中的全局变量越来越难以管理,程序编写将变得越来越困难,因此尽量不要用全局变量。此时函数传参就显得很重要。

1.从所传参数的类型来看,函数传参分为值传递和址传递

值传递:将实参的值的一份拷贝传递给形参,在被调函数中无法真正修改实参的值

址传递:将在被调函数中用到的的变量的地址的一份拷贝传递给形参,例如将变量的指针、数组名、结构体指针当做参数传递给被调函数,在被调函数中是可以通过变量地址的那一份拷贝来修改变量的。

从本质来看,其实址传递也是属于值传递,只不过传递的是实参的地址的拷贝罢了。你根本不可能在程序中真正实现直接将在被调函数中用到的的变量传递给形参,充其量只能将其地址的一份拷贝传给形参。

2.从参数传递的目的来看,函数传参分为输入型参数和输出型参数

输入型参数:该参数只是为了被被调函数所利用,而不是为了在被调函数中改变其值。这类参数通常都用const关键字修饰,以告知程序员,这个是输入性参数,不需要也不可以在被调函数中改变其值。

输出型参数:该参数是为了在被调函数中被改变的。

当参数为值传递是,都属于输入型参数,当参数为址传递时,也就是说指针作为参数时,一般情况下有const修饰的就是输入型参数,没有就是输出型参数。

猜你喜欢

转载自blog.csdn.net/weixin_39330853/article/details/81777352