在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);
}

最新文章

  1. ASP对XML的增、删、改、查
  2. MySQL For Windows修改最大连接数
  3. 《VB语言程序设计(第3版)》总结
  4. 友好解决POI导入Excel文件行是不是为空
  5. SQL Server中GO的使用方法(转)
  6. Maven3.0 服务器配置搭建
  7. hdu 4445
  8. 关于ios8斯坦福公开课第二课
  9. hdu2571命
  10. 第58章 Profile Service - Identity Server 4 中文文档(v1.0.0)
  11. JQ和JS获取元素
  12. hdoj:2069
  13. ssh agent-forward
  14. ES6知识整理(5)--对象的扩展
  15. Excel导入CSV文件中文乱码
  16. python numpy的transpose函数用法
  17. python:数组/列表(remove()函数、append()函数、sort()函数、reverse()函数)
  18. onbeforeunload事件
  19. UML在实践中的现状和一些建议
  20. Redis实现之整数集合

热门文章

  1. vnpy源码阅读学习(1):准备工作
  2. Go和Java的性能对比,真的如此吗?
  3. 加深对于 MVC、MVP、MVVM 的概念理解
  4. LeetCode刷题预备知识(二)
  5. 区间dp - 不连续的回文串
  6. electron教程(番外篇一): 开发环境及插件, VSCode调试, ESLint + Google JavaScript Style Guide代码规范
  7. eclipse android ndk开发遇到的问题.
  8. 第二阶段冲刺个人任务——seven
  9. 【转载】Notepad++源码分析
  10. vuex 基本语法