zoukankan      html  css  js  c++  java
  • c++ 中数组的引用

    在C++里,数组也是可以引用的。

    代码如下:

    1 char str1[] = "abcde";
    2 char (&str2)[6] = str1;

    解读第二句代码,括号的优先级最高,'str2'首先与'&'相结合,表明'str2'是一个引用。

    接着'&str2'与右边的'[6]'结合,表明str2是数组的引用,且数组中有6个元素。

    最后'(&str2)[6]'与左边的'char'结合,表明被引用的数组是一个char类型的数组。

    在声明数组的引用时,有两个地方需要注意:

    第一个地方是'&'的位置,它必须要与reference的名字用括号括起来。

    第二个地方是必须要指定被引用的数组中元素的个数,且元素的个数必须与实际所引用的数组中元素的个数严格匹配。

    两种错误的声明方式:

    1 //type1: char& str2[6] = str1;
    2 //vs编译报错:array of reference is not allowed(不允许使用元素为引用的数组)

    解读一下这句代码:

    'str2'先与右边的'[6]'结合,表示'str2'是一个数组。

    接着'str2[6]'与左边的'char&'结合,表示数组中的元素是一个char的引用。

    1 //type2: char (&str2)[] = str1;
    2 //vs编译报错:cannot convert from 'char [6]' to 'char (&)[]'

     原因:需要指定所引用的数组中所含元素的数量。

    数组引用的正确使用姿势:

    结合c++中模板中的非类型参数(nontype parameter)。

    #include <string>
    
    
    template<unsigned M,unsigned N>
    int compare(char (&leftStr)[M], char (&rightStr)[N])
    {
        return strcmp(leftStr, rightStr);
    }
    
    int main()
    {
        char str1[] = "abcde";
        char str2[] = "abcdefg";
        
        compare(str1, str2);
    }
  • 相关阅读:
    Spring框架(二)
    Spring框架(一)
    SpringMVC中映射路径的用法之请求限制、命名空间
    关于映射路径@ReuqestMapping的总结
    关于什么是SpringMVC,和SpringMVC基于xml配置、注解配置、纯注解配置
    Spring Jdbc 框架整合的第一天
    Docker 搭建java+tomcat
    使用Docker安装mysql
    centos7.2 64位安装java
    Linux vim 基本操作
  • 原文地址:https://www.cnblogs.com/XiaoXiaoShuai-/p/11941427.html
Copyright © 2011-2022 走看看