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

代码如下:

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

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

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

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

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

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

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

两种错误的声明方式:

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

解读一下这句代码:

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

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

 //type2: char (&str2)[] = str1;
//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);
}

c++ 中数组的引用的更多相关文章

  1. js中数组去除重复项目

    js语法技巧:if(a>=5)  alert();  可以改写成下边语句:  a>=5&&alert(); 在下文中会用到这种写法 // for循环删除后面重复的 速度最快 ...

  2. java中数组的基本知识

    数组{ 物以类聚 人以群分 avg sum 数组 数组的概念[ 数组:一组具有相同数据类型的集合 ] 数组的语法[ 先声明 后使用 声明数组: 数据类型+[]+ 变量名 ;/ 数据类型+变量名 +[] ...

  3. C++程序设计(关于函数中数组传递的一点心得)

    题目: 10个学生考完期末考试评卷完成后,老师需要划出及格线,要求如下: (1) 及格线是10的倍数: (2) 保证至少有60%的学生及格: (3) 如果所有的学生都高于60分,则及格线为60分:   ...

  4. C#中数组Array、ArrayList、泛型List<T>的比较

    在C#中数组Array,ArrayList,泛型List都能够存储一组对象,但是在开发中根本不知道用哪个性能最高,下面我们慢慢分析分析. 一.数组Array 数组是一个存储相同类型元素的固定大小的顺序 ...

  5. javascript中数组常用的方法

    在JavaScript中,数组可以使用Array构造函数来创建,或使用[]快速创建,这也是首选的方法.数组是继承自Object的原型,并且他对typeof没有特殊的返回值,他只返回'object'. ...

  6. c/c++ 函数指针 指针函数 数组的引用 指针数组 数组指针

    1.指针数组数组指针 引用数组 数组的引用 int *a[10] 指针数组 每一个元素都是一个指针 Int (*a)[10] 数组指针 P指向一个含有10个元素的数组 Int (&a)[10] ...

  7. javascript中数组Array的方法

    一.常用方法(push,pop,unshift,shift,join)push pop栈方法,后进先出var a =[1,2,3];console.log(a.push(40)); //4 返回数组的 ...

  8. C#中数组、ArrayList和List三者的区别

    在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢. 数组 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. ...

  9. Java中数组的特性

    转载:http://blog.csdn.net/zhangjg_blog/article/details/16116613 数组是基本上所有语言都会有的一种数据类型,它表示一组相同类型的数据的集合,具 ...

随机推荐

  1. 开发一个简单的ip解析webservice接口,并用springmvc生成客户端调用

    1.创建webservice工程,这次先采用jax-ws框架,下次再尝试jax-rs(restful) 2.写个实现ip解析的类,接收传入的ip,并返回解析信息 3.Myeclipse——>Ne ...

  2. express框架中使用nodemon自启动服务

    1.安装nodemon //全局安装 npm install -g nodemon //本地安装 npm install nodemon --save 2.修改package.json配置 " ...

  3. 贪心 park

    来总结一道非常经典的好题 这一道题是通过贪心实现的 首先看到这一题的时间复杂度 n<=100000 需要一个比较玄学的做法 我们先假设把题干改成这个样子 一圈n个车位 停在每个车位都有一定的代价 ...

  4. Spring学习记录5——数据库事务基础知识

    何为数据库事务 “一荣共荣,一损共损”这句话很能体现事务的思想,很多复杂的事务要分步进行,但它们组成了一个整体,要么整体生效,要么整体失效.这种思想反映到数据库上,就是多条SQL语句,要么全部成功,要 ...

  5. LeetCode10 Hard,带你实现字符串的正则匹配

    本文始发于个人公众号:TechFlow 这是LeetCode的第10题,题目关于字符串的正则匹配,我们先来看题目相关信息: Link Regular Expression Matching Diffi ...

  6. 一起来学习XPATH,来看看除了正则表达式我们还能怎么抓取数据

    参考学习的网站链接http://www.w3school.com.cn/xpath/xpath_intro.asp 首先理清楚一些常识 以此为例 <?xml version="1.0& ...

  7. springboot下Caused by: java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required

    已检查jar包是否引入 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId ...

  8. Windows中安装Linux子系统的详细步骤

    早就听说Windows中可以安装Linux子系统,体验了一下,感觉还是不错的,下面直接开始安装和配置步骤吧! 开启Windows中的配置 首先开启开发者模式 打开"所有设置"进入& ...

  9. 废旧手机改造之给你的手机安装win10系统

    最近又开始琢磨把我这个即将退出的二手手机再利用一下 发现了一个不错的软件 先上图 是不是感觉逼格很高啊 点击下面链接即可下载使用 https://www.lanzous.com/i4gpsib 欢迎交 ...

  10. [CCPC2019 ONLINE]E huntian oy

    题意 http://acm.hdu.edu.cn/showproblem.php?pid=6706 思考 打表出奇迹. 注意到这个式子有一大堆强条件限制,最后化为: $$\frac{1}{2}\sum ...