C++三种函数形参
C++三种函数形参简介为什么使用指针或引用作为形参使用引用和指针有什么区别使用常量引用
简介
-
普通形参 :普通形参只是把实参的值拷贝给形参,对形参的改变不会影响到实参。
-
指针形参 :指针形参传入一个指针,本质上也是值传递,把实参的值传递给形参,但此时实参和形参都是指针,形参值和实参值一样,都指向实参指向的对象,此时,修改形参指向的对象就是修改实参指向的对象。
-
引用参数 :把引用作为参数传递给形参,引用不是对象,只是一个别名,和指针形参一样,形参和实参会指向同一个对象。使用形参可以改变实参指向的对象。
为什么使用指针或引用作为形参
-
使用引用或指针可以避免拷贝大的对象或者容器,有的类型不支持拷贝,这时候只能使用指针或引用。
-
一个函数只能返回一个参数,如果一个函数需要返回多个参数,可以使用指针或引用改变实参的值,实现了返回多个参数。
使用引用和指针有什么区别
-
使用引用所做的事,使用指针都可以做到。但指针过于灵活导致使用指针比较危险,如果使用引用就可以做到尽量使用引用,以免发生意外。
-
引用比指针使用起来形式上更漂亮,使用引用指向的内容时可以之间用引用变量名,而不像指针一样要使用*;定义引用的时候也不用像指针一样使用&取址。
-
引用比指针更安全。由于不存在空引用,并且引用一旦被初始化为指向一个对象,它就不能被改变为另一个对象的引用,因此引用很安全。对于指针来说,它可以随时指向别的对象,并且可以不被初始化,或为NULL,所以不安全。const 指针虽然不能改变指向,但仍然存在空指针,并且有可能产生野指针(即多个指针指向一块内存,free掉一个指针之后,别的指针就成了野指针)。
使用常量引用
-
如果不需要改变被引用量的值,尽量使用常量引用。