c语言函数参数地址传递参数,c语言函数间的参数传递

  • Post author:
  • Post category:其他


c语言是由若干个相对独立的函数组成,并且每个函数所完成的功能都不同,但是它们处理的数据有可能为同一批数据,所以在程序设计中就存在数据在函数间传递的问题。

1 函数调用时,实参的形式进行参数传递

1.1 函数调用的值传递

函数调用的值传递又称之为传值调用。传值调用时,实参可以是常量,可是是已经赋值的变量或表达式,甚至是另外一个函数,只要这个传入的实参是一个值,那么就可以作为实参进行传递,就可以对形参进行初始化。

传值调用的机制是系统将实参拷贝一个副本给形参,在函数调用时,系统才给形参分配内存空间,并将对应的实参值传递给形参,这样在内存空间中,就形成了一个被复制的实参副本。

在被调用函数内,形参的改变只影响副本中的参数值,而不影响调用函数中的实参值,故“传值调用”的特点 形参值不影响实际参数值。

函数调用的值传递常用于:函数不需要获取多个结果值,且参数是基本数据类型时,可以采用值传递的方式调用函数。

1.2 函数调用时采用地址传值

采用地址传值是将数据的存储地址作为函数的参数传递,而不是将数据本身传递给函数。

在这种形式中,以变量的地址作为参数调用一个函数,而被调用函数的形式参数必须是可以接受地址值的指针变量,并且它的数据类型必须与被传递数据的数据类型相同。这时,把变量的地址传递给被调用函数,被调用函数通过这个地址该变量的存储位置,直接对该存储位置中的变量的内容进行相关操作,通过这种方式被调用函数可以直接操作“传入参数的值”。

如果想让形参的改变影响实参,即函数返回时需要几个结果值,则应该采用地址传值的方式。</