zoukankan      html  css  js  c++  java
  • 关于函数的参数传递注意事项

    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)只有省略符形参,无需进行与实参的类型匹配。

  • 相关阅读:
    2019-2020-1 20175201 20175215 20175229实验五 通讯协议设计
    2019-2020-1 20175201 20175215 20175229实验四 外设驱动程序设计
    2019-2020-1 实验三-并发程序 20175215
    20175201 20175215 20175229 实验二 固件程序设计
    冲刺博客汇总
    2018-2019-2 20175215 实验五《网络编程与安全》实验报告
    Int和Integer(课上测试)
    MySort(选做)
    2019-2020-2 20175234 赵诗玥 《网络对抗技术》 Exp1 PC平台逆向破解
    2019-2020-2 20175234 赵诗玥《网络对抗技术》 Exp0 Kali安装
  • 原文地址:https://www.cnblogs.com/Dark-King/p/9477397.html
Copyright © 2011-2022 走看看