函数的形参一定要是引用么?
函数的形参一定要是引用么?fun(int &x,int &y)难道不能写成fun(int x,int y)?引用的好处是什么,小萝卜头和罗XX为什么用小萝卜头就好,用罗XX就不好?
函数的形参一定要是引用么?fun(int &x,int &y)难道不能写成fun(int x,int y)?引用的好处是什么,小萝卜头和罗XX为什么用小萝卜头就好,用罗XX就不好?
2018-10-09
其实啊,对于函数参数的传递(也就是实参与形参的结合),在C语言中,一般是两种,一种按值传递,一种是按指针传递,按值传递我们熟悉,创建形参,将实参的值赋给他,然后形参参与到函数运算,但是对于一些需要函数(比如交换函数)改变传入的实参的时候(我理解的实参是这样的,对于按值和按指针,实参就是该变量的值,而形参就是接受该值得变量),按值传递不能起作用了,因为他不是操作原数据而是他的副本,这时候指针就起作用了,传入的是地址的拷贝,但是我们依然可以通过拷贝处理原数据,所以可以完成任务,这时候我们就发现,按值传递传入的数据的拷贝,如果是大型结构体,拷贝起来费空间费时间,远不如一个指针来的容易,这就是有点。再回到C++,他引入了引用的概念,也就出现了按引用传递的概念,但是引用本质就是指针,从前的C++编译器遇见引用就是先将其处理为指针再完成编译,引用是变量a别名,p是指向该变量(比如a)指针,那么*p是不是可以看做a的别名呢,想想,*p其实就是a,那么*p算算是a的引用呢,当然!这就是引用的本质,引用只不过是指针的简化而已!以后的类也是用引用,几乎不用指针,不是不行,而是写着麻烦,看着难受而已!记住本质
举报