值传递(Call by Value):这种方式下,函数接收的是调用时提供参数(实参)的一个副本(形参)。因此,在函数体内对形参的任何修改都不会影响到原始的数据(实参),因为它们是存储在内存中的不同位置。
地址传递(Call by Address,通常通过指针实现):此方式下,传递给函数的是实参的内存地址,而不是其实际值。函数内部通过接收到的地址(以指针形式)来访问和修改原始数据。因此,函数内对通过指针访问的数据的修改会直接影响到原始实参的值。
通过指针传递(Call by Pointer):这实际上是地址传递的一种具体实现形式,直接明确地将实参的地址(以指针的形式)作为参数传递给函数。函数内部使用这些指针来直接访问和修改实参指向的数据。
数组传递:当数组作为函数参数时,实际上传递的是数组首元素的地址。在函数内部,这个地址被当作指向数组首元素的指针来处理,允许通过下标访问整个数组的元素。因此,虽然传递的是地址,但形式上看起来像是传递了数组本身,实际上遵循的仍然是值传递的原则(传递的是地址值)。
返回值传递:函数调用完成后,可以返回一个值给调用者。这个返回值可以作为另一个函数调用的参数。虽然这涉及到值的传递,但它发生在函数调用完成后,与函数内部参数如何传递有所不同。