关于函数的参数传递注意事项

1、若形参是引用,那么实参将被绑定到形参上,否则将实参的值拷贝给形参。

2、当形参是引用时,对应的实参被引用传递,或者函数被传引用调用。

3、当实参的值被拷贝给形参时,两个是互相独立的对象,这时候实参被值传递或者函数被传值调用。

4、指针作为形参时,也是执行拷贝操作,拷贝的是指针的值(地址)。拷贝之后两个指针就没有任何关系了。

5、C语言常常使用指针形参去访问函数外部的对象,而C++建议使用引用类型的形参代替指针。

6、使用引用类型可以避免拷贝。当某种类型不支持拷贝操作时,函数只能使用引用形参访问该类的对象。并且当函数无需修改引用参数的值时,应该使用常量引用。

7、使用引用形参可以返回额外信息,由于一个函数只能返回一个值,所以可以使用引用形参。给函数传递一个额外的引用实参,返回时,额外的实参对应的引用形参会隐式的返回,其实是因为引用形参绑定了实参,所以改变了形参的值也改变了实参的值。

8、当实参初始化形参时,会忽略掉形参的顶层const。

9、可以使用一个非常量去初始化一个底层const对象,但是反过来不行,同时一个普通的引用(指针)只能使用同类型的对象初始化。也就是说不能用一个底层const对象去初始化一个非常量,因为底层const去初始化时底层const参与到了类型匹配。但是可以使用顶层const对象去拷贝初始化一个非常量。可以使用常量引用初始化一个普通非常量,例如const int &r=i;  int j=r;  注意顶层底层性质只是针对于指针与引用。

10、不能以值传递的方式传递数组,但是可以把形参写成类似数组的形式,数组的大小对函数的调用没有影响。但是使用数组时要确保不越界。

11、管理指针形参,也就是数组实参时,若想要函数知道数组的大小,有三种方式:1)传递给形参的数组本身包含结束标识符,例如C风格字符串。2)传递指向数组首元素的指针和数组尾后元素的指针。3)传递数组的同时传递一个数组大小到形参。

12、C++允许将变量定义为数组的引用,形参也可以是数组的引用。数组的引用就是引用一个固定大小的数组的引用。数组引用作为形参,限制了能够传入的数组的大小。

13、注意数组引用跟数组指针作为形参的区别,前者限定了传入的数组大小,后者则不限制传入的数组大小。

14、main函数的参数有两个:第一个是int类型表示第二个参数的数组元素个数,第二个参数是一个指针数组,类型是char*类型,元素是指向C风格的字符串的指针。

15、当使用argv中的实参时,是从argv[1]开始的,并且最后一个指针之后的元素保证为0,argv[0]保存程序的名字,或者为空。

16、initializer_list是标准库类型,用来表示某种特定类型的值的数组,其定义在同名头文件中

17、这种类型的对象的元素是对应其初始值的副本,并且其列表中的元素是const类型,给对象赋值或者拷贝时,不会拷贝列表中的元素,拷贝后原始列表和副本共享元素。

18、若想给initializer_list类型的形参传递一个值的序列,那么需要花括号将序列括起来。并且含有initializer_list类型的形参的函数,还可以同时拥有其他类型形参。

19、省略符形参是为了便于C++访问某些特殊的C代码而设置的,这些C代码使用了名为varargs的C标准库功能。该类型形参仅仅使用于C与C++通用的类型。大多数类类型的对象在传递给省略符形参时无法正确的拷贝

20、省略符形参只能出现在形参列表的最后一个位置。有两种情况:1)部分省略符形参(形参声明后面的逗号是可选的),并且非省略符形参需要与实参进行类型检查,而省略符形参不用。2)只有省略符形参,无需进行与实参的类型匹配。

 

原文链接: https://www.cnblogs.com/Dark-King/p/9477397.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    关于函数的参数传递注意事项

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/279427

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月15日 上午4:10
下一篇 2023年2月15日 上午4:11

相关推荐