zoukankan      html  css  js  c++  java
  • 数组const形参和非const形参的区别

    传递非引用形参的数组类型的参数,其实如下

    void func(int* a);

    void func(int a[]);

    void func(int a[10]);

    是等价的,写成 

    void func(int* a);更加明确易读。

    在 void func(int a[10]); 里面数组大小10 会被编译器忽略。

    当传递引用形参的数组类型的参数,其实如下

    void func(int (&a)[10]);

    编译器不会把数组形参转换成为指针,而是传递数组的引用本身,编译器在编译时会作相关的检测。

    引用一个C++ premier里面的例子。

    // ok: parameter is a reference to an array; size of array is fixed
    void printValues(int (&arr)[10]) { /* ... */ }
    int main()
    {
    int i = 0, j[2] = {0, 1};
    int k[10] = {0,1,2,3,4,5,6,7,8,9};
    printValues(&i); // error: argument is not an array of 10 ints
    printValues(j); // error: argument is not an array of 10 ints
    printValues(k); // ok: argument is an array of 10 ints
    return 0;
    }

  • 相关阅读:
    阴影及定位
    选择器高级、样式及布局
    css的导入与基础选择器
    html知识
    ORM
    python实现进度条
    MySQL单表查询
    一、HTTP
    mysql4
    练习——MySQL
  • 原文地址:https://www.cnblogs.com/howarddeng/p/9633602.html
Copyright © 2011-2022 走看看