c\c++ 参数传递

来源:互联网 发布:函数的参数是数组 编辑:程序博客网 时间:2024/06/06 22:32

-----------《嵌入式c\c++系统工程师实践训练》


      函数参数传递机制实质上是主调函数和被调函数在调用时进行通信方式的问题,基本的传递方式有两种:值传递和引用传递。

     值传递过程中被调函数的形参作为被调函数的局部变量处理,即在栈中开辟了内存空间,用来存放主调函数的实参值,从而成为实参的一个拷贝副本,值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值,因为两个变量不是放在同一个地方。

    引用传递过程中,被调函数的形式参数虽然也作为局部变量在堆栈中开辟了内存空间,但这些内存空间主要为了存放主调函数的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过栈中存放的地址寻找实参变量。被调函数对形参的任何操作都影响了主调函数中的实参量。因为操作的变量存放在同一个地方。


   c语言中,值传递是唯一可用的参数传递机制,实参和形参各自占据独立的存储单元,调用时将实参的值传入形参单元,在被调用函数中访问相应的形参单元,函数调用结束后释放形参单元。因此在被调用函数中改变形参的值并不会改变实参的值。函数调用时是把实参的值拷贝到相应的形参中,被调用函数得到的是实参的拷贝。


   普通变量参数(值传递)

   指针变量参数:

        指针变量参数传递也是值传递,但由于指针操作的特殊性,可以通过间接的方式来改变实参。

   数组变量传递:

        类似于指针变量传递

   引用参数传递:

     

0 0
原创粉丝点击