概要:
教C语言课的过程中,发现很多学生对函数调用中的参数传递问题很容易糊涂。跟师弟交流的过程中,也发现大家对这个问题理解不够透彻。因此,结合本人自己的理解,将函数调用中的传值与传引用进行分析总结。
一、函数调用中传递参数的类型
传值(pass by value):即形参接收实参传递过来的值,如果是自定义类型,要调用拷贝构造函数。函数处理的是形参的值。
传引用(pass by reference):引用表示与原对象完全相同,是同一个对象。若函数的形参是引用,则实参与形参间不存在参数传递,且函数内对形参的修改就是修改实参,因为它们是引用关系,是同一个对象。
1、C语言中,传递的参数类型只有1个:传值,包括传递普通数值和指针。
2、C++中,传递的参数类型有2个:传值、传引用
3、java中,传递的类型只有1个:传值。
java中传的值包括:基本数据类型和对象,其中对象当做指针看待
三种语言的处理方法相同:不管传递的是普通变量还是指针,都是传值。对于指针,看函数修改的是指针的值,还是指针所指对象的值就可以了。
二、程序示例
1、C++:传递的是基本数据类型,包括普通数值、指针和引用