c++ 中数组的引用
在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++ 中数组的引用的更多相关文章
- js中数组去除重复项目
js语法技巧:if(a>=5) alert(); 可以改写成下边语句: a>=5&&alert(); 在下文中会用到这种写法 // for循环删除后面重复的 速度最快 ...
- java中数组的基本知识
数组{ 物以类聚 人以群分 avg sum 数组 数组的概念[ 数组:一组具有相同数据类型的集合 ] 数组的语法[ 先声明 后使用 声明数组: 数据类型+[]+ 变量名 ;/ 数据类型+变量名 +[] ...
- C++程序设计(关于函数中数组传递的一点心得)
题目: 10个学生考完期末考试评卷完成后,老师需要划出及格线,要求如下: (1) 及格线是10的倍数: (2) 保证至少有60%的学生及格: (3) 如果所有的学生都高于60分,则及格线为60分: ...
- C#中数组Array、ArrayList、泛型List<T>的比较
在C#中数组Array,ArrayList,泛型List都能够存储一组对象,但是在开发中根本不知道用哪个性能最高,下面我们慢慢分析分析. 一.数组Array 数组是一个存储相同类型元素的固定大小的顺序 ...
- javascript中数组常用的方法
在JavaScript中,数组可以使用Array构造函数来创建,或使用[]快速创建,这也是首选的方法.数组是继承自Object的原型,并且他对typeof没有特殊的返回值,他只返回'object'. ...
- c/c++ 函数指针 指针函数 数组的引用 指针数组 数组指针
1.指针数组数组指针 引用数组 数组的引用 int *a[10] 指针数组 每一个元素都是一个指针 Int (*a)[10] 数组指针 P指向一个含有10个元素的数组 Int (&a)[10] ...
- javascript中数组Array的方法
一.常用方法(push,pop,unshift,shift,join)push pop栈方法,后进先出var a =[1,2,3];console.log(a.push(40)); //4 返回数组的 ...
- C#中数组、ArrayList和List三者的区别
在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢. 数组 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. ...
- Java中数组的特性
转载:http://blog.csdn.net/zhangjg_blog/article/details/16116613 数组是基本上所有语言都会有的一种数据类型,它表示一组相同类型的数据的集合,具 ...
随机推荐
- ACM北大暑期课培训第三天
今天讲的内容是深搜和广搜 深搜(DFS) 从起点出发,走过的点要做标记,发现有没走过的点,就随意挑一个往前走,走不 了就回退,此种路径搜索策略就称为“深度优先搜索”,简称“深搜”. bool Dfs( ...
- MySQL数据库保存emoji表情
何为emoji表情?这里的全是. MySQL数据库为什么不能存储emoji?不是MySQL不能,而是MySQL的utf8编码不能!原来MySQL下的utf8编码每个字符占3个字节,而emoji占4个字 ...
- Java类成员之构造器
构造器含义: 是指使得JVM在构造对象的时候,帮助进行成员变量的初始化的方法. 构造器(构造方法)格式: 1.对于构造方法而言,方法的名称是固定的,和类名相同. 2.对于构造方法而言,它没有返回值,而 ...
- Faster Rcnn训练自己的数据集过程大白话记录
声明:每人都有自己的理解,动手实践才能对细节更加理解! 一.算法理解 此处省略一万字.................. 二.训练及源码理解 首先配置: 在./lib/utils文件下....运行 p ...
- Jaeger容器化部署
概述 Jaeger是由Uber开源的分布式追踪系统,一套完整的Jager追踪系统包括Jaeger-client.Jaeger-agent.Jaeger-collector.Database和Jaege ...
- Serverless 微服务实践-移动应用包分发服务
背景 阿里云函数计算是事件驱动的全托管计算服务.通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传.函数计算会为您准备好计算资源,以弹性.可靠的方式运行您的代码,并提供日志查询.性能监控.报 ...
- java面试题-集合类
准备年后要跳槽,所以最近一直再看面试题,并且把收集到的面试题整理了以下发到博客上,希望对大家有所帮助. 首先是集合类的面试题 1. HashMap 排序题,上机题. 已知一个 HashMap< ...
- C语言编译成dll
首先c语言在开始要加上 #ifdef __cplusplus extern "C" { #endif …被导出的方法名称 #ifdef __cplusplus } #endif 不 ...
- dp - 求连续区间异或的最大值
For an array b of length m we define the function f as f(b)={b[1]if m=1f(b[1]⊕b[2],b[2]⊕b[3],…,b[m−1 ...
- 关于<Java 中 RMI、JNDI、LDAP、JRMP、JMX、JMS那些事儿(上)>看后的一些总结-1
原文地址:https://www.anquanke.com/post/id/194384#h3-3 1.java rmi 关于rmi客户端和服务端通信的过程,java的方法都实现在rmi服务端,客户端 ...