函数传参主要分为两种形式:值传递与地址传递;值传递本质上是拷贝,所以无法修改形参;而地址传递传递的是形参本身的地址,因此可以修改形参;
数组传参
数组名其本质是数组的首地址,当我们把数组作为参数传递时,此时属于地址传递;
指针传参
指针传参需要注意的是:指针本身可以视作对象,如果我们要修改其指向,那么就必须进行地址传递,对于指针来说,其地址即对应的二级指针;
可变形参
可变形参主要可以通过两种方式实现:
- initializer_list
- 可变参数模板
这两种方式实现可变形参的区别在于:前者必须形参类型都相同,我们可以将其等价于list,只不过与list相比,其缺乏at、[]等访问接口;而可变参数模板则突破了前者这种限制,只不过使用上要稍微复杂一点;