c语言是由若干个相对独立的函数组成,并且每个函数所完成的功能都不同,但是它们处理的数据有可能为同一批数据,所以在程序设计中就存在数据在函数间传递的问题。
1 函数调用时,实参的形式进行参数传递
1.1 函数调用的值传递
函数调用的值传递又称之为传值调用。传值调用时,实参可以是常量,可是是已经赋值的变量或表达式,甚至是另外一个函数,只要这个传入的实参是一个值,那么就可以作为实参进行传递,就可以对形参进行初始化。
传值调用的机制是系统将实参拷贝一个副本给形参,在函数调用时,系统才给形参分配内存空间,并将对应的实参值传递给形参,这样在内存空间中,就形成了一个被复制的实参副本。
在被调用函数内,形参的改变只影响副本中的参数值,而不影响调用函数中的实参值,故“传值调用”的特点 形参值不影响实际参数值。
函数调用的值传递常用于:函数不需要获取多个结果值,且参数是基本数据类型时,可以采用值传递的方式调用函数。
1.2 函数调用时采用地址传值
采用地址传值是将数据的存储地址作为函数的参数传递,而不是将数据本身传递给函数。
在这种形式中,以变量的地址作为参数调用一个函数,而被调用函数的形式参数必须是可以接受地址值的指针变量,并且它的数据类型必须与被传递数据的数据类型相同。这时,把变量的地址传递给被调用函数,被调用函数通过这个地址该变量的存储位置,直接对该存储位置中的变量的内容进行相关操作,通过这种方式被调用函数可以直接操作“传入参数的值”。
如果想让形参的改变影响实参,即函数返回时需要几个结果值,则应该采用地址传值的方式。</